第 1 章 Spark SQL 背景 1
1.1 大数据与 Spark 系统 1
1.2 关系模型与 SQL 语言 3
1.3 Spark SQL 发展历程 4
1.4 本章小结 5
第 2 章 Spark 基础知识介绍 6
2.1 RDD 编程模型 6
2.2 DataFrame 与 Dataset 9
2.3 本章小结 10
第 3 章 Spark SQL 执行全过程概述 11
3.1 从 SQL 到 RDD:一个简单的案例 11
3.2 重要概念 14
3.2.1 InternalRow 体系 14
3.2.2 TreeNode 体系 15
3.2.3 Expression 体系 17
3.3 内部数据类型系统 20
3.4 本章小结 21
第 4 章 Spark SQL 编译器 Parser 22
4.1 DSL 工具之 ANTLR 简介 22
4.1.1 基于 ANTLR 4 的计算器 23
4.1.2 访问者模式 25
4.2 SparkSqlParser 之 AstBuilder 28
4.3 常见 SQL 生成的抽象语法树概览 30
4.4 本章小结 33
第 5 章 Spark SQL 逻辑计划(LogicalPlan) 34
5.1 Spark SQL 逻辑计划概述 34
5.2 LogicalPlan 简介 35
5.2.1 QueryPlan 概述 35
5.2.2 LogicalPlan 基本操作与分类 37
5.2.3 LeafNode 类型的 LogicalPlan 38
5.2.4 UnaryNode 类型的 LogicalPlan 39
5.2.5 BinaryNode 类型的 LogicalPlan 40
5.2.6 其他类型的 LogicalPlan 41
5.3 AstBuilder 机制:Unresolved LogicalPlan 生成 41
5.4 Analyzer 机制:Analyzed LogicalPlan 生成 46
5.4.1 Catalog 体系分析 46
5.4.2 Rule 体系 48
5.4.3 Analyzed LogicalPlan 生成过程 50
5.5 Spark SQL 优化器 Optimizer 56
5.5.1 Optimizer 概述 56
5.5.2 Optimizer 规则体系 57
5.5.3 Optimized LogicalPlan 的生成过程 62
5.6 本章小结 64
第 6 章 Spark SQL 物理计划(PhysicalPlan) 66
6.1 Spark SQL 物理计划概述 66
6.2 SparkPlan 简介 67
6.2.1 LeafExecNode 类型 68
6.2.2 UnaryExecNode 类型 69
6.2.3 BinaryExecNode 类型 70
6.2.4 其他类型的 SparkPlan 70
6.3 Metadata 与 Metrics 体系 71
6.4 Partitioning 与 Ordering 体系 72
6.4.1 Distribution 与 Partitioning 的概念 72
6.4.2 SparkPlan 的常用分区排序操作 76
6.5 SparkPlan 生成 77
6.5.1 物理计划 Strategy 体系 79
6.5.2 常见 Strategy 分析 81
6.6 执行前的准备 83
6.6.1 PlanSubqueries 规则 84
6.6.2 EnsureRequirements 规则 85
6.7 本章小结 89
第 7 章 Spark SQL 之 Aggregation 实现 90
7.1 Aggregation 执行概述 90
7.1.1 文法定义 90
7.1.2 聚合语句 Unresolved LogicalPlan 生成 92
7.1.3 从逻辑算子树到物理算子树 93
7.2 聚合函数(AggregateFunction) 97
7.2.1 聚合缓冲区与聚合模式(AggregateMode) 97
7.2.2 DeclarativeAggregate 聚合函数 100
7.2.3 ImperativeAggregate 聚合函数 101
7.2.4 TypedImperativeAggregate 聚合函数 101
7.3 聚合执行 102
7.3.1 执行框架 AggregationIterator 103
7.3.2 基于排序的聚合算子 SortAggregateExec 104
7.3.3 基于 Hash 的聚合算子 HashAggregateExec 105
7.4 窗口(Window)函数 108
7.4.1 窗口函数定义与简介 109
7.4.2 窗口函数相关表达式 111
7.4.3 窗口函数的逻辑计划阶段与物理计划阶段 113
7.4.4 窗口函数的执行 117
7.5 多维分析 120
7.5.1 OLAP 多维分析背景 120
7.5.2 Spark SQL 多维查询 121
7.5.3 多维分析 LogicalPlan 阶段 123
7.5.4 多维分析 PhysicalPlan 与执行 126
7.6 本章小结 128
第 8 章 Spark SQL 之 Join 实现 129
8.1 Join 查询概述 129
8.2 文法定义与抽象语法树 130
8.3 Join 查询逻辑计划 133
8.3.1 从 AST 到 Unresolved LogicalPlan 133
8.3.2 从 Unresolve LogicalPlan 到 Analyzed LogicalPlan 136
8.3.3 从 Analyzed LogicalPlan 到 Optimized LogicalPlan 137
8.4 Join 查询物理计划 140
8.4.1 Join 物理计划的生成 140
8.4.2 Join 物理计划的选取 141
8.5 Join 查询执行 143
8.5.1 Join 执行基本框架 143
8.5.2 BroadcastJoinExec 执行机制 144
8.5.3 ShuffledHashJoinExec 执行机制 145
8.5.4 SortMergeJoinExec 执行机制 148
8.6 本章小结 155
第 9 章 Tungsten 技术实现 156
9.1 内存管理与二进制处理 156
9.1.1 Spark 内存管理基础 156
9.1.2 Tungsten 内存管理优化基础 174
9.1.3 Tungsten 内存优化应用 179
9.2 缓存敏感计算(Cache-aware computation) 185
9.3 动态代码生成(Code generation) 188
9.3.1 漫谈代码生成 188
9.3.2 Janino 编译器实践 190
9.3.3 基本(表达式)代码生成 191
9.3.4 全阶段代码生成(WholeStageCodegen) 196
9.4 本章小结 211
第 10 章 Spark SQL 连接 Hive 212
10.1 Spark SQL 连接 Hive 概述 212
10.2 Hive 相关的规则和策略 213
10.2.1 HiveSessionCatalog 体系 213
10.2.2 Analyzer 之 Hive-Specific 分析规则 216
10.2.3 SparkPlanner 之 Hive-Specific 转换策略 217
10.2.4 Hive 相关的任务执行 218
10.3 Spark SQL 与 Hive 数据类型 219
10.3.1 Hive 数据类型与 SerDe 框架 219
10.3.2 DataTypeToInspector 与 Data Wrapping 220
10.3.3 InspectorToDataType 与 Data Unwrapping 221
10.4 Hive UDF 管理机制 223
10.5 Spark Thrift Server 实现 225
10.5.1 Service 体系 227
10.5.2 Operation 与 OperationManager 228
10.5.3 Session 与 SessionManager 232
10.5.4 Authentication 安全认证管理 234
10.5.5 Spark Thrift Server 执行流程 235
10.6 本章小结 239
第 11 章 Spark SQL 开发与实践 240
11.1 腾讯大数据平台(TDW)简介 240
11.2 腾讯大数据平台 SQL 引擎(TDW-SQL-Engine) 241
11.2.1 SQL-Engine 背景与演化历程 241
11.2.2 SQL-Engine 整体架构 242
11.3 TDW-Spark SQL 开发与优化 244
11.3.1 业务运行支撑框架 244
11.3.2 新功能开发案例 248
11.3.3 性能优化开发案例 256
11.4 业务实践经验与教训 261
11.4.1 Spark SQL 集群管理的经验 261
11.4.2 Spark SQL 业务层面调优 263
11.4.3 SQL 写法的“陷阱” 268
11.5 本章小结 271
总结 272
参考文献 273
· · · · · · (
收起)