【问题标题】:Spark SQL: how does it map to RDD operations?Spark SQL:它如何映射到 RDD 操作?
【发布时间】:2016-06-03 09:07:44
【问题描述】:

在学习spark SQL的时候,心里有个问题:

如前所述,SQL 执行结果是 SchemaRDD,但幕后发生了什么?优化后的执行计划有多少个转换或动作,应该相当于调用了普通的RDD手写代码?

如果我们手动编写代码而不是 SQL,它可能会生成一些中间 RDD,例如对源 RDD 执行一系列 map()、filter() 操作。但是 SQL 版本不会生成中间 RDD,对吗?

根据 SQL 内容,生成的 VM 字节码还涉及分区、洗牌,对吗?但是如果没有中间 RDD,如何在工作机器上触发调度并执行它们?

其实我还是搞不懂spark SQL和spark core的关系。它们是如何相互作用的?

【问题讨论】:

    标签: apache-spark apache-spark-sql


    【解决方案1】:

    要了解 SparkSQL 或数据帧/数据集 DSL 如何映射到 RDD 操作,请查看 Spark 使用 explain 生成的物理计划。

    sql(/* your SQL here */).explain
    myDataframe.explain
    

    在 Spark 的核心,RDD[_] 是使用分布式操作操作的底层数据类型。在 Spark 版本 DataFrame 是 RDD[Row]Dataset 是分开的。在 Spark 版本 >= 2.x 中,DataFrame 变为 Dataset[Row]。这并没有改变 Spark 使用 RDD 操作这一事实。

    如需深入了解 Spark 执行,请阅读 Understanding Spark Through Visualization

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-23
      • 2016-03-24
      相关资源
      最近更新 更多