Spark SQL:它如何映射到RDD操作?

时间:2016-06-03 09:07:45

标签: apache-spark apache-spark-sql

当我学习spark SQL时,我脑子里有一个问题:

如上所述,SQL执行结果是SchemaRDD,但是场景背后会发生什么?优化执行计划中的转换或操作有多少,应该等同于调用的普通RDD手写代码?

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

根据SQL内容,生成的VM字节码还涉及分区,改组,纠正?但是,如果没有中间RDD,如何在工作机器上激活计划并执行它们?

实际上,我还是无法理解spark SQL和spark core之间的关系。他们如何互相交流?

1 个答案:

答案 0 :(得分:2)

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

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

在Spark的核心,RDD[_]是使用分布式操作操作的基础数据类型。在Spark版本中,< = 1.6.x DataFrameRDD[Row]Dataset是独立的。在Spark版本中,> = 2.x DataFrame变为Dataset[Row]。这并没有改变其下所有Spark使用RDD操作的事实。

要深入了解Spark执行情况,请阅读Understanding Spark Through Visualization