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抽象语法树

AST抽象语法树

2.2往AST中加入元数据

AST中添加元数据元数据解析:
例如: people.id#3#L
解析: 生成 id 的标识为 3 数据类型是Long类型

2.3谓词下推

谓词下推谓词下推的作用 : 把filter操作提前,减少了后续一序列操作的数据集,自然提高了数据的操作效率

2.4列值裁剪

列值裁剪
比如说只需要获取 id 列
就把id列先获取出来
把不需要的列数据提前裁剪掉
减少不必要的列数据

另外:

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

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值