第 1 章 Spark SQL 背景% y, G2 P, R+ K+ s, u: R
1.1 大数据与 Spark 系统0 G( S' [ [& P8 O: g$ q
1.2 关系模型与 SQL 语言3 b* l; l1 c7 _6 c3 D4 u1 Q& I
1.3 Spark SQL 发展历程0 a, T& Q* l1 O& Q( x* P
1.4 本章小结
+ G4 h4 M R& \, o4 w5 W第 2 章 Spark 基础知识介绍3 }: T- |# r" e: g$ x$ r) N1 N
2.1 RDD 编程模型
8 o3 n! P# {6 n' D' `* ~$ L& {2.2 DataFrame 与 Dataset& e. ^9 j3 T& \% c5 O5 M
2.3 本章小结
# I) r7 b- ~! b* ^0 U第 3 章 Spark SQL 执行全过程概述
& j( o7 {, H/ X* I' B4 A3.1 从 SQL 到 RDD:一个简单的案例# s& ]( ^. m" r1 |% r
3.2 重要概念
/ D$ P9 e: A( C- i6 u4 q/ ?3.2.1 InternalRow 体系: D% w$ b9 v: x4 n
3.2.2 TreeNode 体系
, S( | v8 \7 O( C& r+ K# n) `3.2.3 Expression 体系
% {0 L1 ]/ T% O3.3 内部数据类型系统- G" H) a5 r! X. `5 v
3.4 本章小结$ P6 r2 ?# ~2 s( J7 l. M8 F h
第 4 章 Spark SQL 编译器 Parser3 E0 R9 z. n, Q0 k, [( ~; C0 c
4.1 DSL 工具之 ANTLR 简介
) V0 T5 B$ p% ~1 e4 F4.1.1 基于 ANTLR 4 的计算器7 {# u( E2 Q! T
4.1.2 访问者模式: k# {1 E/ Q8 Q% ?, G0 ~# w
4.2 SparkSqlParser 之 AstBuilder: h6 ] S, e, X1 Q' F" w
4.3 常见 SQL 生成的抽象语法树概览" e4 W) b v4 s+ |7 h
4.4 本章小结
+ w) x' O2 v8 ~; V第 5 章 Spark SQL 逻辑计划(LogicalPlan)
}3 ?" {3 h4 q5.1 Spark SQL 逻辑计划概述6 [- F* k5 `0 M. l) D
5.2 LogicalPlan 简介
* G0 L# d5 V. u5.2.1 QueryPlan 概述
: u" i( w0 F9 l& G5.2.2 LogicalPlan 基本操作与分类" y, s p( K& [9 E3 X: a
5.2.3 LeafNode 类型的 LogicalPlan5 e& q2 p: R5 V; ]; P7 o* ~% s0 U
5.2.4 UnaryNode 类型的 LogicalPlan
3 G8 b2 n7 f% w. I6 U5.2.5 BinaryNode 类型的 LogicalPlan
, e/ ? d8 X; ?: X" M: \- E5.2.6 其他类型的 LogicalPlan o. i( O- ~. u& J/ L, X: Z2 e
5.3 AstBuilder 机制:Unresolved LogicalPlan 生成3 c. K m. A" E
5.4 Analyzer 机制:Analyzed LogicalPlan 生成0 U6 z6 N( w9 V- }: [$ z
5.4.1 Catalog 体系分析0 n+ C; W0 r* k; J4 C" v
5.4.2 Rule 体系
6 L f9 j+ ]. K; ~, b* {5.4.3 Analyzed LogicalPlan 生成过程
# }. _. o0 {% m e5.5 Spark SQL 优化器 Optimizer' s) I7 b( e/ _# g* v
5.5.1 Optimizer 概述4 R( C4 D3 |& e8 Y
5.5.2 Optimizer 规则体系6 B3 T7 K. ?8 j! ]* g' ~9 U# Y% c
5.5.3 Optimized LogicalPlan 的生成过程. ]+ z4 m3 o u
5.6 本章小结8 {+ O% W$ ]" F% W; R. Y% d
第 6 章 Spark SQL 物理计划(PhysicalPlan)
+ z2 x8 z9 y) P5 E6.1 Spark SQL 物理计划概述+ L+ u" `9 _0 E
6.2 SparkPlan 简介6 P3 X# a. I$ n- t& E# x) ?
6.2.1 LeafExecNode 类型
4 r, G3 l3 A: j" Z1 o9 x6.2.2 UnaryExecNode 类型5 _" \, a9 @3 ^1 ]" K
6.2.3 BinaryExecNode 类型, ]( r3 m) P/ s6 _7 j# c7 l
6.2.4 其他类型的 SparkPlan
2 H( ?( L* X; v7 k/ f+ I5 C6.3 Metadata 与 Metrics 体系5 |# @. f% Y3 q; D$ x8 i- |1 b
6.4 Partitioning 与 Ordering 体系0 c V- ?1 Q9 z p" L
6.4.1 Distribution 与 Partitioning 的概念
& T5 G, u7 R) j! k0 H' `9 t6.4.2 SparkPlan 的常用分区排序操作
$ n/ v \1 c. J' V: _* C! t6.5 SparkPlan 生成9 @, N Y) Z2 p! P, t
6.5.1 物理计划 Strategy 体系
% @8 D6 Z& D8 }! n j0 V6 W6.5.2 常见 Strategy 分析
S* g6 E0 p) c6.6 执行前的准备
/ k; R: m0 W2 {- q& G: G5 y6.6.1 PlanSubqueries 规则
, @! E G) _* M- Z0 T6.6.2 EnsureRequirements 规则
p* b4 C4 t0 Q4 d6.7 本章小结) A& H ^& t0 ^9 t5 _; P2 Y
第 7 章 Spark SQL 之 Aggregation 实现
: P9 S- ?8 c. I# o1 t: m" [7.1 Aggregation 执行概述
, B* U. S6 x, N. c6 E7.1.1 文法定义
5 v' s; m0 x3 O3 w6 w# Y& L; o6 R$ f. y9 u7.1.2 聚合语句 Unresolved LogicalPlan 生成* Y+ S4 e9 r# o5 e( v3 c- O
7.1.3 从逻辑算子树到物理算子树
0 z1 o9 N2 |- C7.2 聚合函数(AggregateFunction)9 w" [$ v* R5 s) T5 D
7.2.1 聚合缓冲区与聚合模式(AggregateMode)" B ?: ?8 R! e- x8 u
7.2.2 DeclarativeAggregate 聚合函数3 F: |8 x" Q! p2 F6 @
7.2.3 ImperativeAggregate 聚合函数$ E2 @, r2 M- H2 ?. T; v4 o; J. x
7.2.4 TypedImperativeAggregate 聚合函数6 H- d. p& p# v4 e- O; H5 m% |
7.3 聚合执行, D0 `; z# K8 U! n* l
7.3.1 执行框架 AggregationIterator+ o- C: N) L& o6 v) m
7.3.2 基于排序的聚合算子 SortAggregateExec
% ? P3 h: w9 Z- V7.3.3 基于 Hash 的聚合算子 HashAggregateExec6 b5 r: d# s: a) W# K6 ~1 @ N
7.4 窗口(Window)函数
: {8 A2 r' E7 P& U/ S( I7 c" P- M5 a7.4.1 窗口函数定义与简介: I1 r$ K7 \" s! J
7.4.2 窗口函数相关表达式) t) G ^- c. c- A& E4 a! r+ G
7.4.3 窗口函数的逻辑计划阶段与物理计划阶段2 T& e$ p0 Z. O' B' s/ Z4 T
7.4.4 窗口函数的执行. Q( X" X y. b' y
7.5 多维分析
- X0 K5 E: e% f2 [. n# l0 g5 D7.5.1 OLAP 多维分析背景
0 U/ i% [9 c! M/ m4 r8 ~, z- W) J7.5.2 Spark SQL 多维查询, y# l1 l' F- V) a. R+ |# I
7.5.3 多维分析 LogicalPlan 阶段 d" |& T$ U2 O' {( H% j- E
7.5.4 多维分析 PhysicalPlan 与执行
, O- B2 A1 j6 Z5 h& I. n8 D/ j) G, X7.6 本章小结
" x- t! c$ D1 F1 C4 i7 A$ T0 N) N$ w第 8 章 Spark SQL 之 Join 实现
0 G( R% P, w3 L6 C& |: u8.1 Join 查询概述* p- P( E" h5 i
8.2 文法定义与抽象语法树) `' t7 y! R% u, v8 ]
8.3 Join 查询逻辑计划$ i: N' w9 W& G8 C) \, @* H5 y
8.3.1 从 AST 到 Unresolved LogicalPlan
3 o4 o4 G5 x7 K5 ~9 k h8.3.2 从 Unresolve LogicalPlan 到 Analyzed LogicalPlan+ L! L: F% z n3 r* E
8.3.3 从 Analyzed LogicalPlan 到 Optimized LogicalPlan4 ^! N: \ z$ [+ B1 G F+ u
8.4 Join 查询物理计划
6 v( V( K# _* w5 I% o1 P0 H: A* B! ]8.4.1 Join 物理计划的生成
# n. T8 C. G4 C8.4.2 Join 物理计划的选取
# I8 W' [; `' M) r3 t# e8.5 Join 查询执行6 I2 W3 C* @7 \5 S1 n" r
8.5.1 Join 执行基本框架5 x* @! B7 g. e, D6 Z
8.5.2 BroadcastJoinExec 执行机制# O* ]7 N- N/ L1 N7 d6 s0 B
8.5.3 ShuffledHashJoinExec 执行机制' E5 e7 [ Q4 H4 H( u
8.5.4 SortMergeJoinExec 执行机制
( I2 u8 b. ]7 i- H8.6 本章小结6 A* {/ l n; f' ^
第 9 章 Tungsten 技术实现
1 |* x; O$ u, j( _& T8 C- j5 F9.1 内存管理与二进制处理2 f9 W1 y! j- | ~* b
9.1.1 Spark 内存管理基础
! I, v7 T2 V" n& _( {) O) g9.1.2 Tungsten 内存管理优化基础& _* s p( B* [# t# u% m& n0 S
9.1.3 Tungsten 内存优化应用
! @: A) S8 ~/ e, ? ?9 _9.2 缓存敏感计算(Cache-aware computation)
$ L ]2 H0 l$ {. T2 f9.3 动态代码生成(Code generation)- s( h( c2 o" ~) w; H; [
9.3.1 漫谈代码生成
+ b) @- @! q8 K8 N# s6 }9 S$ P* V9.3.2 Janino 编译器实践
. J4 g- G7 }/ f, l9.3.3 基本(表达式)代码生成# b! Z3 w* U% r5 @* k5 B. P/ Q
9.3.4 全阶段代码生成(WholeStageCodegen)
: R$ V; |$ E8 u8 I0 ^8 S9.4 本章小结
. d6 A9 y3 k& L6 {" h第 10 章 Spark SQL 连接 Hive0 ]2 O1 P. f" c6 S
10.1 Spark SQL 连接 Hive 概述
8 D9 V- q; i+ N8 y8 H) d10.2 Hive 相关的规则和策略% y. l, x& U' I5 {
10.2.1 HiveSessionCatalog 体系- ?2 }5 ^+ }4 B) y" M) }
10.2.2 Analyzer 之 Hive-Specific 分析规则
}5 [4 W5 I; b! @6 x10.2.3 SparkPlanner 之 Hive-Specific 转换策略8 c# |9 |' l5 H4 S
10.2.4 Hive 相关的任务执行
! S7 D4 n' L8 {. I& z' ]9 f9 t5 y10.3 Spark SQL 与 Hive 数据类型4 a. L! W) m6 w0 t/ U% _
10.3.1 Hive 数据类型与 SerDe 框架$ v8 e- m7 C: u/ r5 g
10.3.2 DataTypeToInspector 与 Data Wrapping
9 z0 G. t4 L/ W) c, e6 ?6 j10.3.3 InspectorToDataType 与 Data Unwrapping0 U& d- q1 Y( J e5 Z
10.4 Hive UDF 管理机制
+ R; b) x; k' V! v+ X3 S& `, U10.5 Spark Thrift Server 实现
* P, X+ L' ] r9 M$ d) L10.5.1 Service 体系
javazx.com
6 B3 S9 d; y8 ^2 G% t# P! x9 E1 \10.5.2 Operation 与 OperationManager6 f0 b0 ^- Y- g5 W0 J/ d1 N+ c
10.5.3 Session 与 SessionManager% u0 a9 p9 S9 w) a, ~9 i
10.5.4 Authentication 安全认证管理" s" q" H6 h w9 g. Z3 D
10.5.5 Spark Thrift Server 执行流程4 l7 L) X) P7 v" b# f; O( e
10.6 本章小结
A- B7 T/ | ^8 ~' D第 11 章 Spark SQL 开发与实践
7 u) `/ o- L2 t( O# S1 ?! M# J11.1 腾讯大数据平台(TDW)简介
) h I: s4 C2 M9 M5 y. D K h11.2 腾讯大数据平台 SQL 引擎(TDW-SQL-Engine)8 y! K& h9 s( _0 W
11.2.1 SQL-Engine 背景与演化历程" v2 `2 l9 d8 `/ n* M$ ~% M
11.2.2 SQL-Engine 整体架构- Z X( B1 W& i
11.3 TDW-Spark SQL 开发与优化
3 y. K" @: I- |11.3.1 业务运行支撑框架* j! \" @2 T: e/ o: O: P" Q6 \
11.3.2 新功能开发案例
( B5 E. U: |' z11.3.3 性能优化开发案例
+ ^7 E: S3 v( P) _9 E6 }11.4 业务实践经验与教训
) G/ b3 H) g2 v11.4.1 Spark SQL 集群管理的经验
. q0 L8 J' Q \1 z% g+ `11.4.2 Spark SQL 业务层面调优
# _4 ?2 M, ?! h \( P" v5 L3 b11.4.3 SQL 写法的“陷阱” I6 N7 m; g7 F% E/ p$ ]( e- G$ [. S
11.5 本章小结+ Z1 [) ^% e+ r* K1 @
总结
% D# {; w. G3 i" m7 z6 U参考文献