没有合适的资源?快使用搜索试试~ 我知道了~
Spark-Sql源码解析

温馨提示


试读
64页
详细描述了Spark-sql的原理,从sql语句如何转换为逻辑计划,然后是物理计划,最后是rdd
资源推荐
资源详情
资源评论














源码解析
目录
源码解析
一引言
(目录)
!"# $
%
&'()" *
)'()" *
#(+ ,
二:-.)/+#(
三:0/+#(-.+#(
1/1" ,
1/12(
1/12(
1/&)("
34 $
0/+5/#)6#4) %
四!"#7+#(-."#+#( ,
'##)4)#
0#)8+9
4#&#
)8+#(:8)8;(
)8+#(:8)8<#
))# $
$;(#
%4###
*=)"
,!"#> $
&+# $
###?(" *
@##?(" ,
##2&#
##2
##2/#'#
五:"#+#(-.
六&'()"7.()+ $

七'()7()+.1A19B
八+ $,
一. 引言
以一个 的例子开始:
:C
#D#ABEC
FD:EG
DH
!"EG
D#$%H
!#$%"EG
#IF?)D&EG
#<++F?)D'#EG
#'()IF?)D(&EG
#IF?)D)&EG
#(#F?)D*EG
#2D+EG
#2D&,JIEG
#2D'#,J<++EG
#2D(&,J'()IEG
#2D)&,JIEG
#2D*,J(#EG
22F-2DE=D'EG
2IDIEG
.DK<++#'DELLKI(#DEEC
2DH'()IEG
2D!H#"/EG
2D+H !+0+EG
2D H!10/ EG
2DHIEG
2D!H2EG
2DH(#EG
2D!3 H4/5EG
2D-H26EG
2D5H26EG
2D)%!H77!777!6891!2EG
2D'4H, $$,:%;)$$,:%;)5EG
2D H5/<(EG
!"
M

</;(F-</D2EG
.DK<++#'DELLKI(#DEEC
;(++<D<++EG
M
#8+28F!.,777-77726=6=2G
#)(FG
F-D;(EG
&+&F)&#D8+28EG
+&#::4D)(EG
#F(*()5>?!>?!>?>?>?.G
&)FDEG
#2D/,J)()DEEG
M
M
当执行 )()DE就会触发客户端这边提交 <4 进行计算,先来看下关键日志打印(修改过源码方便日志打印):
,$,%$7*7 H,%,>=&!(8D#(7*ENN
,$,%$7*7 H,%,>=&!(8D#(7*ENN
A'':#+H+/O(8#+H+/O(8H(O)H(O+H(O+#(2B
,$,%$7*7 H$%>=&!(8D#(7*ENN+
,$,%$7*7 H$%>=&!(8D#(7*ENN
AP;(AP#+HP+/O(8#+HP+/O(8HP(O)HP(O+HP(O+#(B
P0/+1"ABH=
B
QQ
,$,%$7*7%H >=&!(8(8+):(8+)>D#(7*ENN1/+:,H988/(+H2+2)
,$,%$7*7%H >=&!(8(8+)3(8+)D#(7*ENN<4,?#8+7():;/7 H,*% ,
AFF+#(FF
A!0=:DE()NB
;(A#+N,H+/O(8#+N H+/O(8NH(O)NH(O+N%H(O+#(NB
)4)
1"A#+N,H+/O#+NH+/O(8)NH+/ONH+/O(8NH(O)NH(O)N H(O)(N$H(O+N%H(ON*H(O(N,H(O8NH(O+#(NH(
O9O(+NH(O"NH(O+NH#2ON HO+N$H#O+N%H(O#O)N*H(O#O)N,H(O#O)NH(O#O)NH(O#O)NH(O#O)NH
(ONH+/O(8#+N H(O#O()N$H/ORN%H+(O(RN*H#(O#+N,H(O#OONH(O#OOSNH(O#OO46NH(O#OO#8NH(O4
+NH#24N H#/#N$H4#+ON%H(O)O#(N*H(4#+O#(O)N,H/#2ONH(OONB(8))1"T,,,,
FF+#(FF
()74##
A!0=:DE()NB
;(A#+N,H+/O(8#+N H+/O(8NH(O)NH(O+N%H(O+#(NB
)4)
1"A#+N,H+/O#+NH+/O(8)NH+/ONH+/O(8NH(O)NH(O)N H(O)(N$H(O+N%H(ON*H(O(N,H(O8NH(O+#(NH(
O9O(+NH(O"NH(O+NH#2ON HO+N$H#O+N%H(O#O)N*H(O#O)N,H(O#O)NH(O#O)NH(O#O)NH(O#O)NH
(ONH+/O(8#+N H(O#O()N$H/ORN%H+(O(RN*H#(O#+N,H(O#OONH(O#OOSNH(O#OO46NH(O#OO#8NH(O4
+NH#24N H#/#N$H4#+ON%H(O)O#(N*H(4#+O#(O)N,H/#2ONH(OONB(8))1"T,,,,
FF!"#+#(FF
A!0=:DE()NB
;(
1"A#+N,H+/O#+NH+/O(8)NH+/ONH+/O(8NH(O)NH(O)N H(O)(N$H(O+N%H(ON*H(O(N,H(O8NH(O+#(NH(

O9O(+NH(O"NH(O+NH#2ON HO+N$H#O+N%H(O#O)N*H(O#O)N,H(O#O)NH(O#O)NH(O#O)NH(O#O)NH(
ONH+/O(8#+N H(O#O()N$H/ORN%H+(O(RN*H#(O#+N,H(O#OONH(O#OOSNH(O#OO46NH(O#OO#8NH(O4+
NH#24N H#/#N$H4#+ON%H(O)O#(N*H(4#+O#(O)N,H/#2ONH(OONB(8))1"T,,,,
FFFF
3+2HA(D0ID")NEH,E()NBH2
3+)HA!0=:DE")NBH2
8#(1I""1AB
FF'()FF
3+2HA(D0ID")NEH,E()NBH2
'(8#""
3+)HA!0=:DE")NBH2
8#(1I""1AB
+3"7)
FF1FFB
,$,%$7*7%H % >=&!(+8)+:D:;/7 ENN1)7%*$,
可见一个 语句转化为实际可执行的 的 1 模型需要经过以下几个步骤:
在进一步讲解之前,先主要介绍下 里面的主要类成员:
2@*)
上下文环境,它保存了 )'()" 中所需要的几个类:
1.2.1 Catalog(目录)
一个存储<tableName,logicalPlan>的 map 结构,查找关系的目录,注册表,注销表,查询表和逻辑计划关系的类
T#
AB+7F-#D(2E
#D(272EC
#F-)458IA#H#(BDE

.#:4D
4>+"?7A#BH
7#(E70#FC
转化大小写
4>+F(:4>+"?D4>+"?E
#JFDD4:4=D4>+EHEE
M
.)#:4D4>+"?7A#BE70#FC
4>+F(:4>+"?D4>+"?E
#F4:4=D4>+E
M
.)#:4DE70#FC
#(DE
M
.4'#D4>+"?7A#BE7@FC
4>+F(:4>+"?D4>+"?E
#D4:4=D4>+EE!C
$%DOEF.
=F..
M
M
.)1"D
4>+"?7A#BH
#7!"A#BF=E7#(FC
4>+F(:4>+"?D4>+"?E
4&)=F4:4=D4>+E
&#'%#()*$ +!
根据表名获取
4F#!'D4&)=HD5A,B4&)=EE
4U#8)#?F$#D4>+H4E
,# #-#
#DF.$#DH4U#8)#?EE!'D4U#8)#?E
M
.:4D+4=7!"A#BE7AD#H@EBFC
#C
DHOEF.DHE
M
M
.28:4D+4=7#H4=7#E70#FC
!--0)+!"'("
M
M
1.2.2 SparkSQLParser
将 语句解析成语法树,返回一个 #(。它首先拆分不同的 (将其分类),然后利用 24( 解析。
..
./&$$0/12&#$0
剩余63页未读,继续阅读
资源评论

- afuyu2017-05-26好东西,谢谢

亮亮-AC米兰
- 粉丝: 230
- 资源: 8
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制
