|
java自学网(www.javazx.com)-java论坛,java电子书推荐:《Spark SQL内核剖析》! c0 y |% ?% i% Y- t# W8 K, J' O
java电子书推荐理由: 经过多年的发展,大数据处理技术逐步成熟。作为业界大数据计算的事实标准,Apache Spark系统已经广泛应用于各大企业与研究机构,并形成完整的生态系统。Spark系统包含了SQL、GraphX和R等各个子系统以支持不同业务领域的需求。作为传统关系数据库/数据仓库在大数据场景下的解决方案,Spark SQL已经成为了业界的重要选择方案,同时也成为了Spark开源社区中*为活跃的部分。本书聚焦于Spark SQL系统,对其整体架构、内部各个模块的技术实现机制进行源码级别的剖析,涉及到SQL编译、逻辑计划、物理执行计划、重要查询(如Aggregation与Join等)的技术细节。此外,本书内容上还会结合生产环境的海量应用,分享大量真实开发案例与实践优化经验3 r( U& @4 O0 n& ?0 a3 R- F
6 s( Q, L# L2 u作者:朱锋
" Q0 o! |% k, C( ?3 ?出版社:电子工业出版社
* o2 A: C! C' w W, Q出版时间:2018年08月
# g/ H* {8 ?/ T书籍价格:69.0元9 j4 |& ~! [: ?5 i9 M3 d. U: d2 z/ \
$ `& k# _9 h, K, r9 u$ C
, S" h4 P7 ?8 _6 \3 E( r
8 Q+ R n! E K4 Rjava电子书目录:
" o3 X! o, t7 x! x" A0 s* F# V第 1 章 Spark SQL 背景$ m1 f$ D' p/ [
1.1 大数据与 Spark 系统
' t% e+ _0 l. N9 h* l" v! ]3 x0 X1.2 关系模型与 SQL 语言
- ]' i/ Q* Z# S5 E L1.3 Spark SQL 发展历程
9 L( @; m B; \3 B! P0 b6 I1.4 本章小结$ J! B+ _* v3 J) f3 {
第 2 章 Spark 基础知识介绍2 Z7 I3 S. A+ H1 ^) ~; d# n
2.1 RDD 编程模型2 N6 q7 d; w: S( j9 k) E
2.2 DataFrame 与 Dataset
2 y. c. [9 P0 Z$ ]' \$ G7 o2.3 本章小结
; c: t w! x/ K. K- `# z7 W3 |第 3 章 Spark SQL 执行全过程概述
. y9 I# \" k' c0 |6 B. ~- ^3.1 从 SQL 到 RDD:一个简单的案例
4 Z9 L! f- z+ s, ]# ]: i3.2 重要概念
t9 f# h- h5 b7 ?3.2.1 InternalRow 体系8 {+ e+ g% N: Y0 r2 q$ Q3 f0 j0 Z5 k
3.2.2 TreeNode 体系
: u, @, L6 ~2 t) M" N# \3.2.3 Expression 体系6 i. c5 l/ V- }' }& m% g5 B. ~
3.3 内部数据类型系统/ i2 X" |, r& [. ] u& W; k
3.4 本章小结
4 \6 M/ S- {+ E/ y) M f! t' y& J第 4 章 Spark SQL 编译器 Parser* o! ~4 `) C' C3 T# A
4.1 DSL 工具之 ANTLR 简介
3 ^% w" T% S- m5 O1 y- [4.1.1 基于 ANTLR 4 的计算器; Z+ B/ Q- f; ]3 x- U; G V. R2 l
4.1.2 访问者模式& p4 n* e4 Q k# @; }4 M7 B
4.2 SparkSqlParser 之 AstBuilder1 B( ^& j2 Q& r- z F# W! `
4.3 常见 SQL 生成的抽象语法树概览
! V0 K* l' y/ e9 P1 W: a. j4.4 本章小结
( q& E n4 R, t; b7 o' o- q. f% a e第 5 章 Spark SQL 逻辑计划(LogicalPlan)
" i, K$ I- b/ |: Y( Q5.1 Spark SQL 逻辑计划概述0 P( h1 `" `4 i% S, E* \5 g; n
5.2 LogicalPlan 简介
- ]. ?4 O- T* X6 U1 e! I5 ^& I5.2.1 QueryPlan 概述8 k, B! k+ M! v E# n; P
5.2.2 LogicalPlan 基本操作与分类
& m6 n/ n0 X+ Q) V9 E, f5.2.3 LeafNode 类型的 LogicalPlan- o8 F! J- y- J0 E
5.2.4 UnaryNode 类型的 LogicalPlan
f. B' d2 G4 D; D9 x9 J5.2.5 BinaryNode 类型的 LogicalPlan
5 ~, ]! |/ P+ B5 M$ p' ?; {2 d5.2.6 其他类型的 LogicalPlan
- s1 N9 k) h4 E* i5.3 AstBuilder 机制:Unresolved LogicalPlan 生成
1 V- S: I6 z' |) X' l5 z5.4 Analyzer 机制:Analyzed LogicalPlan 生成3 A) }7 L1 V. L
5.4.1 Catalog 体系分析& B$ F% S# C7 q* }% ]
5.4.2 Rule 体系
) D) L8 n8 U$ Z. P# i5.4.3 Analyzed LogicalPlan 生成过程
: S9 G. s+ a1 y6 ]. O1 K5.5 Spark SQL 优化器 Optimizer
2 d8 `6 V* u, N3 j- ~8 U5.5.1 Optimizer 概述& Y$ W+ s: P5 q. P) x3 R
5.5.2 Optimizer 规则体系
. @% H7 M. ^1 @3 }2 C/ u) S5.5.3 Optimized LogicalPlan 的生成过程) V& p7 V/ P, {8 a+ s
5.6 本章小结
. _% ]0 @: [; G3 z第 6 章 Spark SQL 物理计划(PhysicalPlan)
- `2 ^1 i; d2 V- T# i& T B6.1 Spark SQL 物理计划概述
0 ^- }) D4 h- s" B. ^3 R6.2 SparkPlan 简介6 f& ^8 `0 x, o; v9 h( o$ d6 K
6.2.1 LeafExecNode 类型
) ?8 O4 m. j- L# C+ w6.2.2 UnaryExecNode 类型9 L) c: r( J' h; x$ g6 q
6.2.3 BinaryExecNode 类型
& h) Q' L. t& m2 @6.2.4 其他类型的 SparkPlan1 F0 W8 T- Z$ j& \3 w
6.3 Metadata 与 Metrics 体系
$ I$ k: C. ]" ~: m! w6.4 Partitioning 与 Ordering 体系" S0 Y6 W5 z0 S/ ~6 d1 R* M& I, w9 y
6.4.1 Distribution 与 Partitioning 的概念* F# z2 k, h6 Z* ?
6.4.2 SparkPlan 的常用分区排序操作
! I& e# L# {5 h! K: J; p* }9 F9 P' n6.5 SparkPlan 生成2 u. E; C9 k" G8 C( ~
6.5.1 物理计划 Strategy 体系$ U' K+ V* S0 |% q
6.5.2 常见 Strategy 分析
3 n4 k& p4 F5 h$ \# U3 [8 [; j6.6 执行前的准备 O' ^' {! j9 Q" a
6.6.1 PlanSubqueries 规则6 A$ P8 U" J- _: G0 L5 ~0 U
6.6.2 EnsureRequirements 规则
' s4 h( V% s+ S) d" }6.7 本章小结
0 K' z z# s: g第 7 章 Spark SQL 之 Aggregation 实现
0 ?( W! Z- C9 }" t7.1 Aggregation 执行概述
' W' B! d# U/ O: M# _% Z7.1.1 文法定义
$ _# ^. ^# O! R. Z2 d; @7.1.2 聚合语句 Unresolved LogicalPlan 生成0 U0 z6 M ^8 u5 |* }7 c
7.1.3 从逻辑算子树到物理算子树
5 \: a3 k+ E- ]6 c; A0 h, I7.2 聚合函数(AggregateFunction)
- M0 B4 f {2 _) {$ {7.2.1 聚合缓冲区与聚合模式(AggregateMode)
M1 y6 }$ ~3 ]+ D7.2.2 DeclarativeAggregate 聚合函数
4 @% v4 ~! [1 N9 n* `7.2.3 ImperativeAggregate 聚合函数! s0 @, h% ~% Z4 v: w m C7 g0 @4 H
7.2.4 TypedImperativeAggregate 聚合函数. s* [" q" f& u4 m0 f
7.3 聚合执行
/ n, _: T/ a& X% N; h. R( h7.3.1 执行框架 AggregationIterator
, z0 a& v. \9 Q$ W, _5 _7.3.2 基于排序的聚合算子 SortAggregateExec
+ }' B6 [) h; y& p& u6 T7 K2 ^7.3.3 基于 Hash 的聚合算子 HashAggregateExec
$ f) |6 M/ O' e7.4 窗口(Window)函数! n) A: L( U& T9 b8 p
7.4.1 窗口函数定义与简介: {6 ~7 G. R" K' W
7.4.2 窗口函数相关表达式
' Z* w* R a5 _$ m1 m0 n7.4.3 窗口函数的逻辑计划阶段与物理计划阶段
( S+ I, b- x$ Q+ W+ K% Y' l7.4.4 窗口函数的执行 |! F# b) t) e3 P, y
7.5 多维分析. U; B8 T" X- J- y) E" {: H y
7.5.1 OLAP 多维分析背景
% F4 A$ m( |9 v7.5.2 Spark SQL 多维查询/ K+ N, Y3 }- U, g) w( g
7.5.3 多维分析 LogicalPlan 阶段& |+ E6 c7 X. E: y, B
7.5.4 多维分析 PhysicalPlan 与执行: Z: U8 ~( U( S @9 F4 ^
7.6 本章小结. `8 v" K; j( \) S
第 8 章 Spark SQL 之 Join 实现2 s! q3 p, R4 {& a9 s8 z& q1 ~: g
8.1 Join 查询概述* v( c1 N4 B, _5 [6 ^+ t5 ~
8.2 文法定义与抽象语法树" L2 T0 a+ m& R9 V# G
8.3 Join 查询逻辑计划" B7 [2 t0 N2 _ J4 c4 P7 m
8.3.1 从 AST 到 Unresolved LogicalPlan& i: o) J h& j9 d5 F1 \5 o. q: p
8.3.2 从 Unresolve LogicalPlan 到 Analyzed LogicalPlan
' B& n6 E; d2 p J8.3.3 从 Analyzed LogicalPlan 到 Optimized LogicalPlan
# G+ I; n3 V! o- X6 \2 R5 h8.4 Join 查询物理计划
3 k+ V- x/ p: R0 M) u8.4.1 Join 物理计划的生成3 x# ?7 v2 R: R- w
8.4.2 Join 物理计划的选取
' e" U( R5 D$ m$ t! A4 g8.5 Join 查询执行
2 K; ?% w- n; p# e/ e2 Y8.5.1 Join 执行基本框架
l9 K A- F9 l. q' b5 }) v4 p8.5.2 BroadcastJoinExec 执行机制
( U- L" N2 G$ U, V1 W; q/ u8.5.3 ShuffledHashJoinExec 执行机制: P }9 t' G$ n. @( }. S' H
8.5.4 SortMergeJoinExec 执行机制0 Z- h4 s2 N/ F. g$ N
8.6 本章小结1 I/ D0 {5 w9 l$ O) a& X" U, d
第 9 章 Tungsten 技术实现
% R1 P: d9 L/ J8 K; q7 X9.1 内存管理与二进制处理* z# u( h8 R( P6 Z& R
9.1.1 Spark 内存管理基础
7 F% q) ^ |# I6 C9 @9.1.2 Tungsten 内存管理优化基础0 H3 w/ I+ E. d* |9 y+ s
9.1.3 Tungsten 内存优化应用8 P4 _/ O: Z- n, ^
9.2 缓存敏感计算(Cache-aware computation)
, z* b2 P8 ~) P9.3 动态代码生成(Code generation)
9 T' k+ N8 _( P' A0 D5 L, k) c( |1 m9.3.1 漫谈代码生成! R" E! @8 _: z7 B
9.3.2 Janino 编译器实践' D3 `3 g K. E! j" i
9.3.3 基本(表达式)代码生成
; J, s2 W# k% t2 |* v8 T9.3.4 全阶段代码生成(WholeStageCodegen)! J1 h. Z/ f; C& W) z1 E
9.4 本章小结% `& X2 R& X0 m0 g
第 10 章 Spark SQL 连接 Hive
, {3 X8 X |* e5 s4 z( I10.1 Spark SQL 连接 Hive 概述2 C6 l$ l8 j# b6 X" `. |9 S
10.2 Hive 相关的规则和策略
- \( ?/ c$ ~" U4 S* s) t# M10.2.1 HiveSessionCatalog 体系( c. M' K4 r/ M- D. p) Q+ X
10.2.2 Analyzer 之 Hive-Specific 分析规则
+ b5 P! B: q7 H; `! \+ `10.2.3 SparkPlanner 之 Hive-Specific 转换策略
; W1 A$ h, H% a, g3 R10.2.4 Hive 相关的任务执行
# Z! t) S9 J" p0 g ]1 R10.3 Spark SQL 与 Hive 数据类型
" ~, e- x4 S. e. H) `10.3.1 Hive 数据类型与 SerDe 框架6 |7 Q- s* u; S! b$ H8 T0 u& n0 E9 m
10.3.2 DataTypeToInspector 与 Data Wrapping
$ n" N' p! ?, V10.3.3 InspectorToDataType 与 Data Unwrapping
; q- f, p! Z, }0 O5 t% S- L10.4 Hive UDF 管理机制
: j M; L7 D2 [/ p! B* r10.5 Spark Thrift Server 实现
B7 K& N0 b3 v* ?* l' B10.5.1 Service 体系 javazx.com
9 ?/ Z5 a% m Y* I" i; B10.5.2 Operation 与 OperationManager
7 z. \! J4 _7 x9 N7 b4 D10.5.3 Session 与 SessionManager
" R) d: [# k5 ` B1 O# X5 O! e' S10.5.4 Authentication 安全认证管理8 U5 ^7 O- |+ H; m* |# m
10.5.5 Spark Thrift Server 执行流程
3 w1 ]& G& }0 N+ M10.6 本章小结( v5 I- T0 H9 S% F( E) R
第 11 章 Spark SQL 开发与实践6 ~0 P6 ~0 t6 H! K8 C! c
11.1 腾讯大数据平台(TDW)简介
% x$ l% @" g3 L _11.2 腾讯大数据平台 SQL 引擎(TDW-SQL-Engine)
1 s- o) } j- K; L4 S! S5 M11.2.1 SQL-Engine 背景与演化历程
& r3 l" h [9 B7 |11.2.2 SQL-Engine 整体架构3 w: w; r. }! u; @# p+ m0 l0 l
11.3 TDW-Spark SQL 开发与优化
, k- u! W1 z" O; ^9 H11.3.1 业务运行支撑框架
% T) D3 x3 N; q11.3.2 新功能开发案例
# W4 d) j0 W U& t+ a11.3.3 性能优化开发案例
$ S+ e+ l2 l- d: e% H. w" ^4 L% R11.4 业务实践经验与教训# F9 V7 A3 n5 B
11.4.1 Spark SQL 集群管理的经验
; H2 i* U- [- K( O5 n- q11.4.2 Spark SQL 业务层面调优, G0 _: d8 ^ p* G+ s- i, w+ l/ s
11.4.3 SQL 写法的“陷阱”
$ V1 S: i' H: L, c0 S% ^7 b& X! v11.5 本章小结
9 S: e! b: Q8 N* y" Z" ~4 e3 b总结
5 b% l1 B0 z2 q. S参考文献
; \; ^; f+ U" G0 h" Q# LJava资料百度网盘下载地址链接(百度云):Spark SQL内核剖析@www.javazx.com.pdf【密码回帖可见】
. _; E4 d) s/ Y- n. I) Z: Y4 |/ L) x
$ _8 J6 {7 z p# ^, A
9 ?9 G6 J( |; ~2 c: C' e
& q" {8 J% t8 z7 ]. ~6 h4 {
' ?6 Z o9 ]3 z' Z: D$ ~* L2 l9 |/ O$ }
|
|