Spark SQL运行架构
Spark SQL在分析执行过程中会经历如下的几个步骤:语法解析—>操作绑定—>优化执行策略—>执行
1、sqlparser 生成 unresolved logical plan
2、analyzer 生成logical plan
3、optimizer 生成 optimized logical plan
4、SparkPlanner 生成physical plan
5、SparkPlan生成rdd
6、最终将生成的rdd交给spark执行

由上图看出,Spark SQL 的解析流程为:
-
生成未解析的逻辑计划
在Spark中执行SQL语句就要用到SQLContext的sql()方法,底层会调用SQLParser组件去生成一个未解析的逻辑计划,它的返回结果是一个DataFrame或者Dataset。但是这个过程具有lazy的特性,即生成的DataFrame不是一个数据集而只是一个未解析的逻辑计划的封装,而真正执行剩余步骤的是当这个DataFrame遇到show()这样的操作时才会触发,同时生成的这个逻辑计划中不涉及数据源等信息只是纯语法的骨架 -
生成

Spark SQL执行涉及语法解析、操作绑定、优化执行策略和物理计划生成。Catalyst工作流程包括Parser、Analyzer、Optimizer和SparkPlan。Parser使用ANTLR 4将SQL转化为未解析逻辑计划,Analyzer解析成解析后的逻辑计划,Optimizer通过Rules优化计划,最后生成物理计划执行。Analyzer借助Catalog信息解析词义,Optimizer包含PushProjectionThroughUnion和ReorderJoin等策略。
最低0.47元/天 解锁文章
3536

被折叠的 条评论
为什么被折叠?



