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()这样的操作时才会