第 1 章 Spark SQL 背景
, }9 W$ b% Y+ E* e1.1 大数据与 Spark 系统8 b0 ?) a# D6 H. j* M' P
1.2 关系模型与 SQL 语言/ u+ @( g8 R' Y$ e0 N p
1.3 Spark SQL 发展历程
- b7 v( x& o; G; [8 V1.4 本章小结; H9 O# ?9 K1 i l) Y
第 2 章 Spark 基础知识介绍
3 g" ?/ S: e1 J" y- G- _5 J2 }- V2.1 RDD 编程模型
3 R, W& v. g3 J. O2.2 DataFrame 与 Dataset C1 l: Y3 O& W' `/ q: a
2.3 本章小结
6 @4 G+ O5 {6 j: S第 3 章 Spark SQL 执行全过程概述
m$ Q+ j* r0 ?4 S% w" W0 |, }' l0 s3.1 从 SQL 到 RDD:一个简单的案例) T( R! w1 M S: x
3.2 重要概念0 i3 J. N7 ~( S, |
3.2.1 InternalRow 体系
4 J! U( T* h: F* S1 C; ?+ X3.2.2 TreeNode 体系
: W! H: j( u* t# q8 A( @7 S) U* h+ T3.2.3 Expression 体系* k, ]4 t9 @+ k0 @
3.3 内部数据类型系统
9 _+ g0 D# y4 X% i" \2 N( }. c% u3.4 本章小结
- s, z2 Z3 m6 q7 i5 J, w第 4 章 Spark SQL 编译器 Parser# v$ @* j1 ?" F0 ^. [: H
4.1 DSL 工具之 ANTLR 简介. H0 {6 ?+ [- i3 m# w7 c$ r( U- r
4.1.1 基于 ANTLR 4 的计算器
7 p* A" m' l. i4 {( u, M& }2 w4.1.2 访问者模式
% P7 C" T: Z1 z; ^4.2 SparkSqlParser 之 AstBuilder
+ ]5 z, E0 X2 d* j- a; B" d4.3 常见 SQL 生成的抽象语法树概览
0 e0 Y6 X3 {0 k4.4 本章小结$ _8 n. Q+ p4 A$ o/ W" Z& Y6 O
第 5 章 Spark SQL 逻辑计划(LogicalPlan)0 f7 s6 f$ ?( S
5.1 Spark SQL 逻辑计划概述: K9 O. [" @* B$ R: \
5.2 LogicalPlan 简介! \, h9 V) r, M6 c4 I' E
5.2.1 QueryPlan 概述
5 Y9 K" Y- Q& Y' R2 V: Q5.2.2 LogicalPlan 基本操作与分类
: p& {2 `1 D k ~# J. Q* M( B: H5.2.3 LeafNode 类型的 LogicalPlan
4 d- v) D1 ^0 m5 j5.2.4 UnaryNode 类型的 LogicalPlan+ \+ @# r1 ~% O$ }" L( `9 T
5.2.5 BinaryNode 类型的 LogicalPlan
/ O- D; t4 M9 ]* ]% ]5.2.6 其他类型的 LogicalPlan
" V: B9 ?; m, s. S8 v. _5.3 AstBuilder 机制:Unresolved LogicalPlan 生成+ n% {+ |9 g* G* G! }8 I( I2 e
5.4 Analyzer 机制:Analyzed LogicalPlan 生成" d" L. I, v$ |! M$ T- t
5.4.1 Catalog 体系分析
, w% I; q3 M1 P8 R$ b" L" R* Y5.4.2 Rule 体系. x5 [. t5 K: Y+ U) Q6 v6 U
5.4.3 Analyzed LogicalPlan 生成过程0 w3 Y8 b% m9 ^% n9 L; | @
5.5 Spark SQL 优化器 Optimizer
; |' A; Z; r; W6 r* [4 ^: B* h3 z2 ^5.5.1 Optimizer 概述 z6 v: z8 }! |. t! V# W
5.5.2 Optimizer 规则体系
" W# Z% A) m& _5.5.3 Optimized LogicalPlan 的生成过程
w: h* J# W& [( F5.6 本章小结
$ A, E+ D( v# Q3 G6 Q; c' n% m第 6 章 Spark SQL 物理计划(PhysicalPlan)1 O( s4 K& M( }5 s' v8 |
6.1 Spark SQL 物理计划概述
! ~' @+ i" F8 `* Y5 n6.2 SparkPlan 简介* x* ~8 g+ S0 ^% M" G1 {& z
6.2.1 LeafExecNode 类型
4 E( J+ l" |0 e, D4 J0 s* N6.2.2 UnaryExecNode 类型
: ^) B+ W' _. [6.2.3 BinaryExecNode 类型7 V2 h+ ]+ H* t! ^2 b. l' @
6.2.4 其他类型的 SparkPlan7 @/ J( l) A1 E$ _+ C% M4 |0 f1 p- ?8 r
6.3 Metadata 与 Metrics 体系
( w( V# O+ U, Z9 t7 g! n6.4 Partitioning 与 Ordering 体系
6 ~: w+ m z; \6.4.1 Distribution 与 Partitioning 的概念
0 r' `! m+ r- {5 c6.4.2 SparkPlan 的常用分区排序操作
6 v" k7 {- W- l+ f% R$ S1 X. g6.5 SparkPlan 生成1 i& {0 Y0 }+ I0 k
6.5.1 物理计划 Strategy 体系; X; K+ d1 M% q f$ h% C
6.5.2 常见 Strategy 分析
. Y% O, H1 s" v7 s- ?1 Z6.6 执行前的准备1 M: r( j, j2 d7 b4 T
6.6.1 PlanSubqueries 规则
0 z! z3 B" q3 n2 D. I3 h6.6.2 EnsureRequirements 规则4 X3 }; V% w' i9 N
6.7 本章小结
: b# D" f, E( ], I第 7 章 Spark SQL 之 Aggregation 实现% ?, ~) H5 O! s+ W3 @
7.1 Aggregation 执行概述
2 x& ~6 X5 k# t7 v$ B# b ^" m7.1.1 文法定义: r2 y* }% T6 D$ I {( y0 t0 y5 E
7.1.2 聚合语句 Unresolved LogicalPlan 生成1 u" {2 o$ P. v& Q3 B' Q2 t
7.1.3 从逻辑算子树到物理算子树
* P" h5 ~; L% g8 v4 f8 X7.2 聚合函数(AggregateFunction)( @! D* y& |7 q0 ~- d! t2 M8 Z
7.2.1 聚合缓冲区与聚合模式(AggregateMode)4 s3 T* j0 m! @ W9 a9 M
7.2.2 DeclarativeAggregate 聚合函数2 q/ V6 r, i- P6 A$ Q) y. @8 n
7.2.3 ImperativeAggregate 聚合函数
/ l9 {$ W, q; }! w$ r7.2.4 TypedImperativeAggregate 聚合函数6 E3 m/ Y# r, b
7.3 聚合执行
2 i+ `: ^: W a9 n, O3 e7.3.1 执行框架 AggregationIterator
' y1 |7 `) Z: I& t% d& W7.3.2 基于排序的聚合算子 SortAggregateExec8 I& g! i% @( D: a `, m7 q: h
7.3.3 基于 Hash 的聚合算子 HashAggregateExec
E1 {5 v9 t a! g% _7 p; X" i: x: }7.4 窗口(Window)函数* b" H6 d! [& L6 P; R! f( M
7.4.1 窗口函数定义与简介
/ q9 o3 z! J0 B5 K& N7.4.2 窗口函数相关表达式" J6 K) l( p" r2 v2 K
7.4.3 窗口函数的逻辑计划阶段与物理计划阶段2 W! g1 a* d! j; E' {5 [* b* }
7.4.4 窗口函数的执行4 j$ @3 j/ b; O9 @
7.5 多维分析
7 _( q- i- d! w7 k M7.5.1 OLAP 多维分析背景5 i! C! a% V' o- T7 J4 P
7.5.2 Spark SQL 多维查询
7 B8 ^4 Q" B, z) C: ?7.5.3 多维分析 LogicalPlan 阶段- G p/ z9 v, e: q& z6 P7 B! W
7.5.4 多维分析 PhysicalPlan 与执行1 ]9 Y- Y& Y K5 M6 |3 B+ w7 r
7.6 本章小结4 J# Y0 Y1 J* g$ {
第 8 章 Spark SQL 之 Join 实现6 D& n& x' ^$ u; V9 B* y
8.1 Join 查询概述: w* T9 t$ L) g2 k! A
8.2 文法定义与抽象语法树6 J/ _0 k# y4 M" g
8.3 Join 查询逻辑计划1 Z+ Q0 M- g- u1 |+ T
8.3.1 从 AST 到 Unresolved LogicalPlan1 P1 k& P5 h" B1 n3 v; D' {" s5 {
8.3.2 从 Unresolve LogicalPlan 到 Analyzed LogicalPlan
6 P( V& j& F. }% s8.3.3 从 Analyzed LogicalPlan 到 Optimized LogicalPlan" `" X; n- x8 [# U
8.4 Join 查询物理计划
5 I+ \9 i3 |" }1 L8.4.1 Join 物理计划的生成4 C: J# N" q7 M& i7 w
8.4.2 Join 物理计划的选取
9 b7 B% o5 Y# _3 i8.5 Join 查询执行; _' O# r# o9 f1 a) o S
8.5.1 Join 执行基本框架
0 X) Y" W7 V; J& V, o: Z9 W8.5.2 BroadcastJoinExec 执行机制
' D7 X$ T( `" n8.5.3 ShuffledHashJoinExec 执行机制
, y3 \( m3 o6 a2 @* r8.5.4 SortMergeJoinExec 执行机制
+ [5 `0 ^! e( }% C$ }4 `8.6 本章小结* l- D2 M0 [' [& g) Y7 M( y4 V: j& y: w
第 9 章 Tungsten 技术实现8 v* r+ `9 v- E' j
9.1 内存管理与二进制处理' h, W& T) F, F# a! {+ v$ g
9.1.1 Spark 内存管理基础0 e- u) Z& O1 l) B# Y; W1 i
9.1.2 Tungsten 内存管理优化基础
. m/ v6 n4 n3 ^/ p9.1.3 Tungsten 内存优化应用; X! U: M# {# O$ O. l \6 A, n" c2 p% W
9.2 缓存敏感计算(Cache-aware computation)0 W1 l, u& e) O& ^/ \5 T1 y
9.3 动态代码生成(Code generation)
; g4 w( _/ a( _: T9.3.1 漫谈代码生成
0 D7 ?, \' J/ P1 d9.3.2 Janino 编译器实践8 K+ j! T+ T1 s3 X% H# L
9.3.3 基本(表达式)代码生成
7 G/ g5 b' n1 A1 G: V2 w. K9 b9.3.4 全阶段代码生成(WholeStageCodegen)
/ p9 G6 s" \: ?. ?. b2 E& [1 @9.4 本章小结
4 K' P. ^' `% \/ L3 P第 10 章 Spark SQL 连接 Hive# m) q9 _, o. v! T+ [
10.1 Spark SQL 连接 Hive 概述. G; j0 B. L; A7 i, ~. S; b
10.2 Hive 相关的规则和策略
E2 `5 o! R8 F& R10.2.1 HiveSessionCatalog 体系
9 u/ o) ^. m! L# e/ h+ t, ]10.2.2 Analyzer 之 Hive-Specific 分析规则
* \# f7 K+ c% a& c& t10.2.3 SparkPlanner 之 Hive-Specific 转换策略5 p4 Y% H, }' U, p+ j% F
10.2.4 Hive 相关的任务执行
1 V7 F" h1 _$ N7 O: ?" ~* e/ F: f0 N6 d10.3 Spark SQL 与 Hive 数据类型
5 Z$ F& B! V$ E4 Z& m/ d10.3.1 Hive 数据类型与 SerDe 框架
2 e6 C- c: k) w3 S H10.3.2 DataTypeToInspector 与 Data Wrapping! T' f5 h2 }9 ?: H1 Y$ @- W
10.3.3 InspectorToDataType 与 Data Unwrapping* }5 i/ Y: F8 Z! D4 V
10.4 Hive UDF 管理机制
. c* Z' s' r/ |$ h) Z+ c* K4 v" P10.5 Spark Thrift Server 实现
: P4 W& v" ]4 p" R% J: L5 ?10.5.1 Service 体系
javazx.com
6 o7 I) O& A# w( C10.5.2 Operation 与 OperationManager
; H; W6 g S' b10.5.3 Session 与 SessionManager i! }) T& J1 f R
10.5.4 Authentication 安全认证管理" z" g" ]7 i( K
10.5.5 Spark Thrift Server 执行流程
; t& v9 m0 r3 @/ O1 c' G- i10.6 本章小结6 q3 b/ l2 `( g1 M9 K) a( i
第 11 章 Spark SQL 开发与实践- q0 }$ z) {. `* ]* J
11.1 腾讯大数据平台(TDW)简介8 y- N9 D% u4 ]
11.2 腾讯大数据平台 SQL 引擎(TDW-SQL-Engine)& w; t# `' e: m$ s7 O( }3 K
11.2.1 SQL-Engine 背景与演化历程
/ _# L+ j/ o; ^6 J11.2.2 SQL-Engine 整体架构* p9 }- S+ t1 Q, \ y* c
11.3 TDW-Spark SQL 开发与优化' ^9 d+ J8 A* m& \$ u; c( N! X
11.3.1 业务运行支撑框架
8 Z9 `7 M! y0 m+ c9 e" v11.3.2 新功能开发案例
- N- w6 u, Q* K$ x11.3.3 性能优化开发案例
2 o: K& ~* G8 j) b* V: @0 `11.4 业务实践经验与教训, A) {% ]5 [ ^4 j2 y$ E* R
11.4.1 Spark SQL 集群管理的经验" R0 ~! Y2 ` E
11.4.2 Spark SQL 业务层面调优
1 A6 X/ A! z& B11.4.3 SQL 写法的“陷阱”6 [5 U! l# _- d3 o6 Y
11.5 本章小结) L' j. m, |" w, G
总结
7 D# z$ r7 g e" Y( Q参考文献