Spark SQL 源码分析(一):从 SQL 到 RDD

之前,曾经和同事讨论过一个问题:实现相同的逻辑,使用 RDD 一定比 SQL 执行速度更快么?

我的答案是:不一定。

至少在 Spark 2.0 之后,SQL 的执行速度是有可能比 RDD 更快的。

原因,是因为 SQL 最终生成的是经过优化的 RDD,如下图所示:

sql2rdd

生成未解析的逻辑计划

这一步,SQL 语句通过词法分析和语法分析,生成抽象语法树(AST)。解析抽象语法树,生成未解析的逻辑计划。

解析逻辑计划

TODO

逻辑优化

TODO

生成物理计划

TODO

CBO

TODO

代码生成

TODO

基于 Spark 2.3.0 版本