|
java自学网(www.javazx.com)-java论坛,java电子书推荐:《Spark SQL内核剖析》
; [7 m7 j+ i; z3 g6 rjava电子书推荐理由: 经过多年的发展,大数据处理技术逐步成熟。作为业界大数据计算的事实标准,Apache Spark系统已经广泛应用于各大企业与研究机构,并形成完整的生态系统。Spark系统包含了SQL、GraphX和R等各个子系统以支持不同业务领域的需求。作为传统关系数据库/数据仓库在大数据场景下的解决方案,Spark SQL已经成为了业界的重要选择方案,同时也成为了Spark开源社区中*为活跃的部分。本书聚焦于Spark SQL系统,对其整体架构、内部各个模块的技术实现机制进行源码级别的剖析,涉及到SQL编译、逻辑计划、物理执行计划、重要查询(如Aggregation与Join等)的技术细节。此外,本书内容上还会结合生产环境的海量应用,分享大量真实开发案例与实践优化经验, F7 J9 Z2 `6 Q3 L; V
) L5 R8 K) X. B3 G% {4 Z9 T, J
作者:朱锋( T9 R1 e, V* E y
出版社:电子工业出版社
) m8 V* \3 G# ?" v/ W6 ]. l出版时间:2018年08月
1 I) E, r6 n& ~: B* ?9 K1 C书籍价格:69.0元/ ^8 b& Z4 G' c5 H
# H) m8 N% [+ t- V3 t" h% m& M
: [ N" X2 e) I% D1 d b( C: x+ P3 a8 o4 R1 G& W( o
java电子书目录:4 B1 o4 K0 i# s7 R5 a
第 1 章 Spark SQL 背景0 x. x: V/ j! A+ u
1.1 大数据与 Spark 系统# M' H5 D; u" j, I
1.2 关系模型与 SQL 语言 Y2 c, p& k; F C
1.3 Spark SQL 发展历程
+ i8 v% y" G. A7 ?9 v8 m1.4 本章小结
* U5 ^- z) j# i% P/ A" S第 2 章 Spark 基础知识介绍% e& q& F+ t' [1 }) j
2.1 RDD 编程模型" d; j) m! `) f! B8 P$ ^
2.2 DataFrame 与 Dataset( t' u- f8 k! N1 A. M
2.3 本章小结; |2 N2 {" Q$ N) u
第 3 章 Spark SQL 执行全过程概述
/ s5 b+ y9 J9 x3.1 从 SQL 到 RDD:一个简单的案例6 B4 A- o$ A4 [9 ?0 z* \: y. b
3.2 重要概念- U3 x* x' I+ {7 m7 J
3.2.1 InternalRow 体系& V! T* E3 ~, J2 o. C4 {- x
3.2.2 TreeNode 体系( k0 [$ N7 }5 H# d" R
3.2.3 Expression 体系9 H( h4 H; u1 G1 {, r) X& d) H
3.3 内部数据类型系统
; b0 B# [% a$ }- y3.4 本章小结
9 f# z) S# \2 [3 H) J- ?; U0 V第 4 章 Spark SQL 编译器 Parser2 m- r1 X0 |4 ~- U% F3 u4 x- ?
4.1 DSL 工具之 ANTLR 简介( N3 e9 C& a* Y( C( N6 i
4.1.1 基于 ANTLR 4 的计算器5 }* @0 H/ n+ j- D/ @! g
4.1.2 访问者模式3 k) ^( K2 f ~4 U7 a7 q. D
4.2 SparkSqlParser 之 AstBuilder
# A: _% a! U9 r3 @6 h) \4.3 常见 SQL 生成的抽象语法树概览7 M& w- [, H9 Z* U
4.4 本章小结, q, b& b$ i4 b& d) P
第 5 章 Spark SQL 逻辑计划(LogicalPlan)
) ?& i' }$ M" Z3 h& P" P h5.1 Spark SQL 逻辑计划概述
/ }9 F% k |9 v/ A5.2 LogicalPlan 简介
# L& {: E$ H2 J( C& Q3 }" m' Q5.2.1 QueryPlan 概述
7 C: z* ~* @# s/ V4 x6 E C5.2.2 LogicalPlan 基本操作与分类# i* l; J, b) \+ M
5.2.3 LeafNode 类型的 LogicalPlan: ]( J6 W. z/ q" ?$ E7 j: u
5.2.4 UnaryNode 类型的 LogicalPlan
3 ?. B- R% p0 _& m, i5 j5.2.5 BinaryNode 类型的 LogicalPlan
7 E- M4 H2 a9 |: x3 s% d5.2.6 其他类型的 LogicalPlan
7 A$ e- d5 r" e! ?# Z5.3 AstBuilder 机制:Unresolved LogicalPlan 生成1 \) Q. u' V5 ]( ^- v! |
5.4 Analyzer 机制:Analyzed LogicalPlan 生成& H/ \3 M# H9 U4 z8 m7 ~" Z
5.4.1 Catalog 体系分析
# H# z' j. B9 |6 m: a! v) r$ }: E5.4.2 Rule 体系
% [- P" F, j9 b( S9 b2 e* ~5.4.3 Analyzed LogicalPlan 生成过程( r! M S0 U5 I4 d5 h# p! e1 J
5.5 Spark SQL 优化器 Optimizer
3 w, L- U$ i7 o X- X, t; W5.5.1 Optimizer 概述6 O3 e1 K& v9 f; A' o
5.5.2 Optimizer 规则体系
8 Q( i3 o$ J( e5.5.3 Optimized LogicalPlan 的生成过程* k2 `; I5 _$ n
5.6 本章小结. N* R' A0 S& X5 m9 G' v K
第 6 章 Spark SQL 物理计划(PhysicalPlan)% X: ?$ f0 ]8 m6 X1 q: K( y4 ~
6.1 Spark SQL 物理计划概述
8 f3 }7 t( s8 T( |' G6.2 SparkPlan 简介
9 F, s! @" Z' L* G% `6.2.1 LeafExecNode 类型
8 @ L- _6 b! B+ I, g& n6.2.2 UnaryExecNode 类型
5 H- `& r4 N, s3 R: q# X! z6.2.3 BinaryExecNode 类型
% z# g! C, b1 d% O6.2.4 其他类型的 SparkPlan
2 P: Y) B' Q% |) L! h% f, \6.3 Metadata 与 Metrics 体系
5 n: t+ \" O( o, j9 `6.4 Partitioning 与 Ordering 体系6 {7 b0 b8 V+ g1 L: H2 h' w0 W
6.4.1 Distribution 与 Partitioning 的概念9 p* o# ^( x# I+ \* p8 D2 Y# S6 _
6.4.2 SparkPlan 的常用分区排序操作& Q& P E: ?$ [' D3 o* l C0 I
6.5 SparkPlan 生成9 p& I- N9 J$ ]. Y1 q. c. o
6.5.1 物理计划 Strategy 体系5 G% k: P" _! m9 Y& `
6.5.2 常见 Strategy 分析
- c4 e. g: v. H% o. W4 F. p6.6 执行前的准备
' u% K1 f [) O8 O9 T0 J) K! d6.6.1 PlanSubqueries 规则* S0 h9 A3 [* O/ J/ R
6.6.2 EnsureRequirements 规则
% B! a [5 Y! T# f6.7 本章小结
. W- }% @! i% J# H第 7 章 Spark SQL 之 Aggregation 实现& g& T6 I2 L0 {* |2 b& w) D, b
7.1 Aggregation 执行概述
Y4 N. x! L d7.1.1 文法定义
T5 |3 V7 w- b2 B7.1.2 聚合语句 Unresolved LogicalPlan 生成4 U9 [5 k+ z6 j T, R" {% E* _; U3 |
7.1.3 从逻辑算子树到物理算子树
0 G' |; y& ^% D4 B2 P& Q7.2 聚合函数(AggregateFunction), k! r. E2 \& q' X9 E& E* C& s
7.2.1 聚合缓冲区与聚合模式(AggregateMode); b- R7 \# }% j1 L, C
7.2.2 DeclarativeAggregate 聚合函数1 P# [0 {" j5 ?3 _
7.2.3 ImperativeAggregate 聚合函数
; ^1 S0 \! L5 _$ @( {7.2.4 TypedImperativeAggregate 聚合函数
, ?8 p& i5 G9 t1 i5 [- K8 t7.3 聚合执行
( Q- H0 M5 z `- M7.3.1 执行框架 AggregationIterator5 O: B8 F+ Y, n2 l0 u
7.3.2 基于排序的聚合算子 SortAggregateExec* V2 P+ t% i# b. {. }! j
7.3.3 基于 Hash 的聚合算子 HashAggregateExec$ q# u t+ |) b1 W, ]- h
7.4 窗口(Window)函数
' Q# f- m( W* A5 ]& Y1 J7.4.1 窗口函数定义与简介7 V+ P$ p' @6 {- x
7.4.2 窗口函数相关表达式
! x8 ]4 g+ t8 U# A3 E! f7.4.3 窗口函数的逻辑计划阶段与物理计划阶段
' B) h$ B& L0 M) u& i7 j8 i6 o7.4.4 窗口函数的执行
) s" e. \2 H# m7 b5 S/ ], r9 S" z7.5 多维分析" C5 y' D. u5 Q. } N9 F
7.5.1 OLAP 多维分析背景' y" t2 a, B& L! x& u
7.5.2 Spark SQL 多维查询
; g9 t' ?9 }" b* V2 ?4 E- v. _! e7.5.3 多维分析 LogicalPlan 阶段; ?7 Y8 u" I7 k: A; S7 m
7.5.4 多维分析 PhysicalPlan 与执行! N2 {* y: I0 \5 S2 e7 I/ I
7.6 本章小结5 q K, c% g5 |% S1 y
第 8 章 Spark SQL 之 Join 实现
. d( z9 k) E; p# ?8.1 Join 查询概述
. L! C3 m, M% \, U$ B% x8.2 文法定义与抽象语法树* @* ~5 o$ P$ @2 }: ]* ?( }
8.3 Join 查询逻辑计划: U. l+ @3 @/ p1 w4 y
8.3.1 从 AST 到 Unresolved LogicalPlan
+ a: @2 b9 ~9 r, r& P8.3.2 从 Unresolve LogicalPlan 到 Analyzed LogicalPlan0 r, G& Z) E$ s0 ~
8.3.3 从 Analyzed LogicalPlan 到 Optimized LogicalPlan# k- d6 S r6 N* ?: L3 i$ E6 ]
8.4 Join 查询物理计划
5 y4 J- Z5 J0 N0 O" P8 S8.4.1 Join 物理计划的生成8 c- n4 [( n! O4 t, N
8.4.2 Join 物理计划的选取
( b2 I" E) E! k% ], f. X9 w/ j/ L! M8.5 Join 查询执行
8 r7 K8 q9 h, R2 T- H! _$ t) c8.5.1 Join 执行基本框架& v5 ~: t. g5 ^! R1 X$ u
8.5.2 BroadcastJoinExec 执行机制6 l( \ I! ]; m( Q- V& Q: x8 C
8.5.3 ShuffledHashJoinExec 执行机制
( D1 ~# `* Q. l8.5.4 SortMergeJoinExec 执行机制
7 g! i" i. A8 l% u" f8.6 本章小结- V, t0 K% I9 b# H+ U
第 9 章 Tungsten 技术实现
) A3 r: m! [ Q a9.1 内存管理与二进制处理# h- J" S2 K/ D* y0 a
9.1.1 Spark 内存管理基础1 A+ e7 K# Z- \; _6 y3 }* L
9.1.2 Tungsten 内存管理优化基础
g! F, g5 A/ H( u3 z: N9.1.3 Tungsten 内存优化应用9 U" G, z0 `( |8 I# e# _5 f ?
9.2 缓存敏感计算(Cache-aware computation)* H P- S( @) r a5 ^
9.3 动态代码生成(Code generation)
% L. R' A, r2 ?0 u3 Q: Z3 B6 U9.3.1 漫谈代码生成1 J6 H$ Z9 q* Z7 F7 |
9.3.2 Janino 编译器实践7 n9 s/ G7 I$ {) F, [
9.3.3 基本(表达式)代码生成7 ?0 U9 }+ U" u: q) T
9.3.4 全阶段代码生成(WholeStageCodegen), N) t' T) B9 }: n8 t3 n1 e
9.4 本章小结
" \+ A0 J3 L, G% f$ W- U) _第 10 章 Spark SQL 连接 Hive
% y5 S: b( w7 Q1 e* a10.1 Spark SQL 连接 Hive 概述
2 w, P* @& J" g; W) ]10.2 Hive 相关的规则和策略8 y* g. j0 F% ]. F1 G i
10.2.1 HiveSessionCatalog 体系: M' _5 z( q# x$ k
10.2.2 Analyzer 之 Hive-Specific 分析规则
# G5 c, Q* E2 `" Q" T+ A1 ]. B- L10.2.3 SparkPlanner 之 Hive-Specific 转换策略
7 V" F) o- x! Q0 b$ a+ e10.2.4 Hive 相关的任务执行0 @ H5 p% S6 X4 C
10.3 Spark SQL 与 Hive 数据类型
4 F- G" @9 v/ t9 ]5 u5 F10.3.1 Hive 数据类型与 SerDe 框架% J$ T' \1 a# f
10.3.2 DataTypeToInspector 与 Data Wrapping
3 l' |! W/ ?" | M7 `10.3.3 InspectorToDataType 与 Data Unwrapping
( _) e8 ~ k% [# k10.4 Hive UDF 管理机制
L5 B! i* r& c! L% s- }10.5 Spark Thrift Server 实现
% P, P* a4 U: ?3 o2 u, i10.5.1 Service 体系 javazx.com# r# {6 B5 i" M1 K5 u- h
10.5.2 Operation 与 OperationManager
$ ^- {8 F2 I. r' J- M10.5.3 Session 与 SessionManager
t/ |6 j+ [1 r$ S& V7 f8 R10.5.4 Authentication 安全认证管理( |) X- b( l0 y) \; H1 @
10.5.5 Spark Thrift Server 执行流程
( x F/ A# P5 n, B2 C; O10.6 本章小结
: [9 ?" Y" s% U! Z0 R第 11 章 Spark SQL 开发与实践
, D/ k9 @ h! v4 `4 h) o; s; s: D0 z11.1 腾讯大数据平台(TDW)简介
5 \* P4 q* t4 c" S$ y) y11.2 腾讯大数据平台 SQL 引擎(TDW-SQL-Engine)- H# N; ] b2 n1 \; r
11.2.1 SQL-Engine 背景与演化历程2 }1 d1 u7 q% @; |0 `
11.2.2 SQL-Engine 整体架构
% S' n6 G8 i( W+ v5 Q( x) `11.3 TDW-Spark SQL 开发与优化3 ?+ J4 R! X) ^% i' L
11.3.1 业务运行支撑框架* \! }& I, f/ z D& w0 J) {
11.3.2 新功能开发案例
% I9 [; h6 P9 n& b# E11.3.3 性能优化开发案例
* y1 v8 r5 H) w( }* a! A K6 O11.4 业务实践经验与教训. \/ l( Z/ W1 N) w9 \/ Q5 u; O# c
11.4.1 Spark SQL 集群管理的经验( G+ V% o" w+ \! O
11.4.2 Spark SQL 业务层面调优- O# ^3 x) J1 j6 L8 S! U g
11.4.3 SQL 写法的“陷阱”
; I Y+ H5 U( Z8 S11.5 本章小结7 S7 t y6 q5 a) d1 s0 W& S5 F3 y
总结
# f1 D7 h/ f/ a1 q. M参考文献 ) K" P5 ^+ a D$ c- ?! A$ Z
Java资料百度网盘下载地址链接(百度云):Spark SQL内核剖析@www.javazx.com.pdf【密码回帖可见】
5 |' |) \' v- H2 g% v
, L O# b$ c# s5 a. k
9 ^ f' y) ?# M* E# ]( [7 n
9 K9 J: R% C# \7 Z) C' C) ~# x
, [& A9 \6 w7 R0 n
6 L" X6 N, I/ }0 H4 u
9 t# J2 A: d7 v |
|