sparksql优化_Spark源码阅读-Spark SQL概述

首先推荐一本书关于sparksql书籍 《Spark SQL 内核剖析》朱峰 张绍全 黄明 著。

特意咨询了databricks开源spark主要负责人smilegator,推荐上面这本书。非常值得去阅读。

直接进入主题:

一:Spark SQL执行全过程,一张图写清楚整个流程。

da0ee4fcda9bf59b39da5775aefee049.png

sparksql语句在集群主要经过两大过程

1,逻辑计划(LogicalPlan),理解为树型数据结构,逻辑算子树

2,物理计划(PhysicalPlan),理解为物理算子树

那么一条sql又具体每个过程经历如下子过程:

逻辑计划(LogicalPlan):

a,未解析的逻辑算子树(Unresolved LogicalPlan),仅仅是数据结构,不包含任何数据信息

b,解析后逻辑算子树(Analyzed LogicalPlan),节点中绑定各种信息

c,优化后逻辑算子树(Optimized LogicalPlan),应用各种优化规则对一些低效的逻辑计划进行转换

物理计划(PhysicalPlan):

a,根据逻辑算子树,生成物理算子树的列表(Iterator[PhysicalPlan]),同样逻辑算子树可能对应多个物理算子树。

b,从列表中按照一定策略选取最优的物理算子树(SparkPlan)

c,对选取的物理算子树做提交前的准备工作,例如确保分区操作正确,物理算子节点重用,执行代码生成等。经过准备后的物理算子(Prepared SparkPlan)

最终物理算子树生成的RDD执行action操作,即可提交执行。

64fafce26bfe52f898c63fb2875b04de.png

二:简单案例分析

"select sum(chineseScore) from (select x.id,x.chinese+20+30 as chineseScore, x.math rom studentTalbe x inner join scoreTalbe y on x.id=y.sid)z where z.chineseScore <100"

这条sql具体在saprksql中经历了什么呢,两张图张图写清楚一切

逻辑计划(LogicalPlan)如下:

e7c91a326a326ef0fb25b62838386a0e.png

物理计划(PhysicalPlan)如下:

11bd43581a5d657e7f2cc8d3fa55e59c.png

三:怎么阅读spark sql源码

其实梳理好整个spark sql流程,不难发现其实核心是catalyst(优化器系统)就是根据每个流程中每个阶段去阅读,应该是高效合理的。

antrr4

parser

analyzer

optimizer

sparkplan

以上为主线阅读。

下篇将从parser开始!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值