Spark SQL整体架构
从上图可见,无论是直接使用 SQL 语句还是使用 DataFrame,都会经过如下步骤转换成 DAG 对 RDD 的操作
1) Parser 解析 SQL,生成 Unresolved Logical Plan
在Unresolved Logical Plan中,不知道涉及表是什么类型,数据存在何处,表的结构是什么;
这一步主要完成词法和语法解析,生成解析树
2)由 Analyzer 结合 Catalog 信息生成 Resolved Logical Plan
Catalog中包括表名称、表字段名称和字段类型等。借助catalog完成数据,类型,操作的绑定。
有了这些信息,已经可以直接将该 LogicalPlan 转换为 Physical Plan 进行执行。但每个用户提交的SQl质量不一样,直接执行会导致执行效率差距太大。因此需要进行SQL优化