当我们在数据框架上运行sql更新时,Apache spark sql沿袭是如何演变的?



我正试图开发一个后端模块,这需要我在DataFrame上做几个sql更新,由hdfs中的拼花格式支持。我感兴趣的是了解多个sql更新如何影响DataFrame的RDD沿袭,以及在DataFrame上执行几个频繁的sql更新是否会引起关注,因为根据我的理解,DataFrame上的单个sql更新将是一个转换。是否存在等同于在单个沿袭步骤中对数据框进行批量更新的方法?

两个重要的注意事项:

  • Spark DataFrames是不可变的,因此不能更新。您只能创建一个新的DataFrame
  • 转换和沿袭是特定于RDD的。虽然内部DataFrame (Dataset)上的每一组操作都被转换为一些DAG并使用RDD执行,但RDD阶段和您在Dataset上应用的方法之间没有微不足道的对应关系。操作人员可以透明地重新排列、移除或压在一起。查询是如何转换的不是合约的一部分,如果你对给定版本的细节感兴趣,你应该检查执行计划以及相应RDD的explain DAG。

    一般来说,单个操作可能需要0(如果通过投影或使用琐碎谓词消除了特定操作)和两个阶段(典型的聚合)之间。如果可能的话,投影通常被安排在一起,聚合行为随着时间的推移而改变。

    最后,某些操作可能需要多个作业来推断模式或计算统计信息。

相关内容

  • 没有找到相关文章

最新更新