SparkSQL的执行和优化过程

SparkSQL是基于RDD的,但是其执行效率又比RDD高,其原因就是因为SparkSQL的优化器–Catalyst

RDD执行效率低是因为RDD无法进行优化,其本身不具备数据scheme约束信息,无法得知数据的具体信息,然而SparkSQL一般用于结构化和半结构化数据,所以具备数据的scheme信息,可以对其进行优化处理

一:SparkSQL的API

SparkSQL的API有三种
sql
Dataset
DateFrame

二:SparkSQL的执行流程

SparkSQL的执行和优化过程

三:SparkSQL的优化过程

1.API层接收sql语句

2.Catalyst层优化

2.1.解析SQL生成AST抽象语法树

SparkSQL的执行和优化过程

2.2往AST中加入元数据

SparkSQL的执行和优化过程元数据解析:
例如: people.id#3#L
解析: 生成 id 的标识为 3 数据类型是Long类型

2.3谓词下推

SparkSQL的执行和优化过程谓词下推的作用 : 把filter操作提前,减少了后续一序列操作的数据集,自然提高了数据的操作效率

2.4列值裁剪

SparkSQL的执行和优化过程
比如说只需要获取 id 列
就把id列先获取出来
把不需要的列数据提前裁剪掉
减少不必要的列数据

另外:

AST只是逻辑计划,后续还需要生成物理计划,执行RDD