|
java自学网(www.javazx.com)-java论坛,java电子书推荐:《Spark SQL内核剖析》
0 v; ?& g+ I( `" L$ o( [$ cjava电子书推荐理由: 经过多年的发展,大数据处理技术逐步成熟。作为业界大数据计算的事实标准,Apache Spark系统已经广泛应用于各大企业与研究机构,并形成完整的生态系统。Spark系统包含了SQL、GraphX和R等各个子系统以支持不同业务领域的需求。作为传统关系数据库/数据仓库在大数据场景下的解决方案,Spark SQL已经成为了业界的重要选择方案,同时也成为了Spark开源社区中*为活跃的部分。本书聚焦于Spark SQL系统,对其整体架构、内部各个模块的技术实现机制进行源码级别的剖析,涉及到SQL编译、逻辑计划、物理执行计划、重要查询(如Aggregation与Join等)的技术细节。此外,本书内容上还会结合生产环境的海量应用,分享大量真实开发案例与实践优化经验
% I$ K! j" _) w- S: j9 S1 U& o9 v' N! l& `* H O. v2 J# `9 `; m; O
作者:朱锋
1 E7 Q" r" @& }! [ x1 l出版社:电子工业出版社
% p m3 C4 z( e+ v/ w出版时间:2018年08月 * _7 c3 f1 g6 U% f/ H1 F& G/ h7 [
书籍价格:69.0元
2 L1 A9 ~3 D/ ~: [% X' n# ]$ p- ^6 A ~" _: b" I
3 ^- B: i* f' | ~! ~, z
+ r( ~9 |: g3 r- z
java电子书目录:
7 y* j& z7 c" C8 ?' d7 k第 1 章 Spark SQL 背景# O/ F) U( Q* }
1.1 大数据与 Spark 系统
4 n _* b& h6 G4 Y" a1.2 关系模型与 SQL 语言+ @; ~' V; g2 d( ~3 g9 {
1.3 Spark SQL 发展历程( r8 U: O5 |9 _2 P7 G9 N6 D2 m8 Q
1.4 本章小结
8 l( E6 H/ r Y第 2 章 Spark 基础知识介绍
) K7 j+ P2 a( w! s3 e! X2.1 RDD 编程模型8 D5 c9 [% \* g1 L
2.2 DataFrame 与 Dataset$ j* }" B# T( g. t/ \* o0 J
2.3 本章小结
7 l+ R/ X1 ^. ?( @" w& Y第 3 章 Spark SQL 执行全过程概述
( e+ ~+ B& x7 W3.1 从 SQL 到 RDD:一个简单的案例3 Z: q. M! a: b2 J. j' g6 B: A
3.2 重要概念) v- B* d/ l9 n0 J* [0 h
3.2.1 InternalRow 体系
* A, |( b* }* z; K5 S% T+ [3.2.2 TreeNode 体系
! p1 @* P- ?0 Y) B; V+ m3.2.3 Expression 体系! d( g+ w, B- N! ~! H) P' U8 x
3.3 内部数据类型系统4 `, g+ ]6 U& Y' S
3.4 本章小结- |; X& p$ o( [- Q' _. P
第 4 章 Spark SQL 编译器 Parser5 ^9 O- i% c, t6 c( _% @1 |
4.1 DSL 工具之 ANTLR 简介! Z; K R# t; e# W& }
4.1.1 基于 ANTLR 4 的计算器4 g. y. x7 k% X; w1 o' M
4.1.2 访问者模式0 r s8 w* m1 a% ^& Y7 p* \, F/ U
4.2 SparkSqlParser 之 AstBuilder$ b1 q1 z& j& x) q
4.3 常见 SQL 生成的抽象语法树概览
1 M1 {6 q; E; |) i4.4 本章小结# {( ]( b) @* t$ e* R0 X4 Z$ I
第 5 章 Spark SQL 逻辑计划(LogicalPlan)
; L% v H0 D, d0 B6 r' w+ S$ }& I5.1 Spark SQL 逻辑计划概述' [+ s, @! X. }* O& p& @
5.2 LogicalPlan 简介
+ J/ `1 @& C7 y. a2 A7 l" q5.2.1 QueryPlan 概述+ T7 W% m4 z- J
5.2.2 LogicalPlan 基本操作与分类/ r) \4 f" Q: g( {+ R3 }9 S1 d
5.2.3 LeafNode 类型的 LogicalPlan
( C: W. n3 R: O, \& d$ `5.2.4 UnaryNode 类型的 LogicalPlan
x5 @: }2 z# _8 ]: O$ p0 W* O- L5.2.5 BinaryNode 类型的 LogicalPlan# y3 W" S' I7 O# x7 Q6 [3 X# F
5.2.6 其他类型的 LogicalPlan
& q' J7 _2 U( ]- q% d5.3 AstBuilder 机制:Unresolved LogicalPlan 生成& B# `$ y0 h7 [& `$ |
5.4 Analyzer 机制:Analyzed LogicalPlan 生成
$ U: P# |$ y8 N. j* h5.4.1 Catalog 体系分析& G$ t" C- J( Z( X- ~1 ~
5.4.2 Rule 体系9 O5 v6 j$ C8 K( g U f) q
5.4.3 Analyzed LogicalPlan 生成过程+ f6 _+ X5 k0 B0 e4 J
5.5 Spark SQL 优化器 Optimizer8 ~+ C2 [: j5 i( Y8 J7 L& x! n3 @4 F" t2 u
5.5.1 Optimizer 概述' P" J( f! n5 T, V
5.5.2 Optimizer 规则体系 {2 q' g4 C* A5 y/ {7 b- K- A
5.5.3 Optimized LogicalPlan 的生成过程
- E o+ {* B0 g [5.6 本章小结: ^ ?$ l) M2 `7 q: s# r6 y$ P
第 6 章 Spark SQL 物理计划(PhysicalPlan)- O) M9 ^$ ~3 @7 W) b/ i/ q
6.1 Spark SQL 物理计划概述
2 ~, B2 |7 ]4 h, @$ B7 M( W, Z; j! R5 a6.2 SparkPlan 简介
6 l, f3 G4 W; g/ ?* ~3 g& A8 @$ h6.2.1 LeafExecNode 类型1 H7 A; }* Z5 [& X3 _5 U6 b+ J
6.2.2 UnaryExecNode 类型+ w4 c$ v3 J/ t* _ O) F
6.2.3 BinaryExecNode 类型
8 B! _* |4 P: M6.2.4 其他类型的 SparkPlan1 q" Z/ y7 O$ c9 f- t( t3 `6 {! _
6.3 Metadata 与 Metrics 体系
. ^7 l/ W6 L, ]/ h) _6.4 Partitioning 与 Ordering 体系
, _2 s& Q# i& Q6 p6.4.1 Distribution 与 Partitioning 的概念
$ U+ R) E" ^) S( C9 p$ l/ v0 {6.4.2 SparkPlan 的常用分区排序操作# {* K2 @# ~% W1 t$ E' |5 U% A
6.5 SparkPlan 生成1 Z+ T3 f+ ]! W
6.5.1 物理计划 Strategy 体系+ u& }9 z- C5 A6 E/ s* D* Q' B5 W
6.5.2 常见 Strategy 分析
7 d9 ]0 C; _! g( m6.6 执行前的准备
: k% \; r8 w' S! w7 c) n2 Z; X( U6.6.1 PlanSubqueries 规则
+ ?& F% u: N* g% }6.6.2 EnsureRequirements 规则
: [: b0 @+ q. X; ^" ~9 O6.7 本章小结$ _: r. y) T. R9 S
第 7 章 Spark SQL 之 Aggregation 实现6 q, {5 o8 _5 }2 X: e4 S. c7 G- B9 f
7.1 Aggregation 执行概述" L; p! k$ Q7 d/ F3 U7 Q
7.1.1 文法定义
7 K. n7 r- i0 Y# c3 ^7.1.2 聚合语句 Unresolved LogicalPlan 生成 O R- A. S2 o) t
7.1.3 从逻辑算子树到物理算子树
. z/ \7 S$ a+ N4 X( v/ ~0 [* c7.2 聚合函数(AggregateFunction)& ?0 g5 \6 }: U' `' u) C, \- k
7.2.1 聚合缓冲区与聚合模式(AggregateMode)
7 q& y3 q- V; V9 b! ^8 t7.2.2 DeclarativeAggregate 聚合函数% d7 o: l3 G$ B+ M# Z5 j r/ v2 N
7.2.3 ImperativeAggregate 聚合函数
1 n+ ~( H4 W) a q# A7.2.4 TypedImperativeAggregate 聚合函数
. p# d& H0 ]5 F$ _9 R7.3 聚合执行0 x8 x4 _7 l" K7 {; h* [* g
7.3.1 执行框架 AggregationIterator" C0 o6 B! q e! ~
7.3.2 基于排序的聚合算子 SortAggregateExec/ ~4 w& ~% ~9 q1 W
7.3.3 基于 Hash 的聚合算子 HashAggregateExec0 y4 ?' U3 P2 y$ Q# |
7.4 窗口(Window)函数$ i* b& m$ L" l, f3 T! H' {: b- m L
7.4.1 窗口函数定义与简介
. H, m$ G7 E' C! h5 h7.4.2 窗口函数相关表达式
0 o% `. j" _- C! j1 T5 _- t7.4.3 窗口函数的逻辑计划阶段与物理计划阶段
1 j( e' i1 _" \% @7.4.4 窗口函数的执行
3 F) O7 @, r+ c. b2 r0 x7 ]7.5 多维分析1 ^/ N) f* G* l J" G; C6 l
7.5.1 OLAP 多维分析背景% W: B/ d5 a T% H }# B
7.5.2 Spark SQL 多维查询
% R2 e- D+ x" a' Z3 H U7.5.3 多维分析 LogicalPlan 阶段
9 t- ]1 L6 o' G7.5.4 多维分析 PhysicalPlan 与执行$ h) u5 U9 k+ X5 s0 N
7.6 本章小结% M# s- D# ~4 {! n- v
第 8 章 Spark SQL 之 Join 实现
- w' C' N+ o, ]7 t! `, u8.1 Join 查询概述
- p3 l- x* B( f5 E6 ]1 l; R8 L8.2 文法定义与抽象语法树/ Z* \- j% l7 @, s9 j# x
8.3 Join 查询逻辑计划7 E6 m D- y8 n# P6 h
8.3.1 从 AST 到 Unresolved LogicalPlan
9 W( r- d+ L k8.3.2 从 Unresolve LogicalPlan 到 Analyzed LogicalPlan$ z1 D3 W* F% |. c9 G9 _% Q9 `
8.3.3 从 Analyzed LogicalPlan 到 Optimized LogicalPlan3 w, t u) ^7 ?2 ~3 M
8.4 Join 查询物理计划
( k* D1 V9 ~! l7 ]. E8.4.1 Join 物理计划的生成
9 V; M! H7 t9 ]8.4.2 Join 物理计划的选取
1 d" V$ J: U! r/ E& o8.5 Join 查询执行" s- c, |3 {; P" ?0 L# D6 c2 \
8.5.1 Join 执行基本框架
1 y3 i4 p6 B, O7 G4 P& ?8.5.2 BroadcastJoinExec 执行机制" A/ t+ Z U1 M4 a
8.5.3 ShuffledHashJoinExec 执行机制7 k) m2 u% g, s+ v. c
8.5.4 SortMergeJoinExec 执行机制+ U0 _% W& ~: x5 y* I# v3 S9 ?
8.6 本章小结
/ b0 G+ |' b3 B ^5 s6 l1 h第 9 章 Tungsten 技术实现
2 o% [6 } X& {' ?: ]' p+ l( Y9.1 内存管理与二进制处理
# R9 z9 y i/ R2 |) `9.1.1 Spark 内存管理基础3 r( V7 W4 J W' k! w$ `
9.1.2 Tungsten 内存管理优化基础7 W' }+ i1 x& ~# p' g$ q- ]
9.1.3 Tungsten 内存优化应用( |3 p4 z- `/ ]# X7 u0 r. `
9.2 缓存敏感计算(Cache-aware computation)8 K4 A3 t8 E( Q2 M+ K6 C$ A
9.3 动态代码生成(Code generation)
* v! D/ B* s* L0 V9.3.1 漫谈代码生成; F& x! [. `4 h& U% q+ E/ Q
9.3.2 Janino 编译器实践$ @9 O" ]9 T3 l; m
9.3.3 基本(表达式)代码生成
, W1 y9 d' Y( g' d9.3.4 全阶段代码生成(WholeStageCodegen)3 L' J( F% e( c% k2 g9 S
9.4 本章小结
. x6 v) K% q; \8 C9 H2 }, Z( x第 10 章 Spark SQL 连接 Hive. w) d6 C0 U; E1 f0 ^
10.1 Spark SQL 连接 Hive 概述* ^) ~. ]4 P7 {$ {
10.2 Hive 相关的规则和策略4 [7 I4 c$ r( b, {4 C1 {" X
10.2.1 HiveSessionCatalog 体系
9 U0 H7 \0 E0 C# C- b! L; O2 G. i, b* d10.2.2 Analyzer 之 Hive-Specific 分析规则
) ?6 V# Q- g- Z; N7 g* M10.2.3 SparkPlanner 之 Hive-Specific 转换策略! j x& }4 v+ K+ w* i1 x; U
10.2.4 Hive 相关的任务执行' M i' x+ `6 m: i, S
10.3 Spark SQL 与 Hive 数据类型$ B& C9 B& W n4 U
10.3.1 Hive 数据类型与 SerDe 框架
4 D3 }( _% ? A( V" n+ q10.3.2 DataTypeToInspector 与 Data Wrapping( H8 j+ E& W) M8 {: F* ^8 I4 K
10.3.3 InspectorToDataType 与 Data Unwrapping* b0 b6 }: g8 v" ]
10.4 Hive UDF 管理机制
# \1 y- T# r; g10.5 Spark Thrift Server 实现
! y" t5 O N1 A# L9 P* [10.5.1 Service 体系 javazx.com& l* i2 M: n+ Y2 j% L+ \& ]+ E
10.5.2 Operation 与 OperationManager: @$ m: b1 h! M* l6 _6 j
10.5.3 Session 与 SessionManager2 t# J$ E1 s4 V ^2 ^$ } ^
10.5.4 Authentication 安全认证管理
7 h/ N" _& ^) b; l9 {% Q" _10.5.5 Spark Thrift Server 执行流程
" S6 q; y, s* K7 w8 L3 J10.6 本章小结; e! I* z; f* P8 h+ u2 B
第 11 章 Spark SQL 开发与实践6 ~* c9 M' R- K4 ]
11.1 腾讯大数据平台(TDW)简介
- Y& V; l/ Y2 M; _! S9 O0 m9 t11.2 腾讯大数据平台 SQL 引擎(TDW-SQL-Engine)" {8 U) G8 p0 Z: t5 Q
11.2.1 SQL-Engine 背景与演化历程/ T* L* ~9 _9 w: r
11.2.2 SQL-Engine 整体架构9 F- H! W5 l/ V7 L% P6 X
11.3 TDW-Spark SQL 开发与优化: s& g8 \2 d% f: C0 t
11.3.1 业务运行支撑框架
* I+ ~7 b7 C* B4 W0 p11.3.2 新功能开发案例' L4 h( {, u: w, E+ n, O* N( ~
11.3.3 性能优化开发案例$ r5 I0 F* b0 Y, X$ G& v
11.4 业务实践经验与教训
% Y7 m# O$ z" B+ N11.4.1 Spark SQL 集群管理的经验7 O, c4 l4 Q9 y; J0 m( P
11.4.2 Spark SQL 业务层面调优
! A/ R m8 b" |; e11.4.3 SQL 写法的“陷阱”5 U7 C: P! {# J# D
11.5 本章小结
* g: S3 ]# |( t( j总结% O4 {: W4 j) ? Q, l3 \6 A2 E
参考文献
, l& r k e; b2 L8 L+ eJava资料百度网盘下载地址链接(百度云):Spark SQL内核剖析@www.javazx.com.pdf【密码回帖可见】/ ~( ]* S' k- h: r* u6 [( \
- _& W2 f" `, }6 P7 a0 x/ n0 _/ L. Y0 J# G/ g( n
1 y) y v9 A4 w" y; b4 x2 K2 ~2 W/ x& @7 P5 \
, b% l7 o+ g7 S, L
. a8 ~- i& F) `+ {" C: \8 ? |
|