《Spark SQL内核剖析》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:朱锋,张韶全,黄明著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2018
  • ISBN:9787121343148
  • 页数:276 页
图书介绍:经过多年的发展,大数据处理技术逐步成熟。作为业界大数据计算的事实标准,Apache Spark系统已经广泛应用于各大企业与研究机构,并形成完整的生态系统。Spark系统包含了SQL、GraphX和R等各个子系统以支持不同业务领域的需求。作为传统关系数据库/数据仓库在大数据场景下的解决方案,Spark SQL已经成为了业界的重要选择方案,同时也成为了Spark开源社区中最为活跃的部分。本书聚焦于Spark SQL系统,对其整体架构、内部各个模块的技术实现机制进行源码级别的剖析,涉及到SQL编译、逻辑计划、物理执行计划、重要查询(如Aggregation与Join等)的技术细节。此外,本书内容上还会结合生产环境的海量应用,分享大量真实开发案例与实践优化经验。

第1章 Spark SQL背景 1

1.1大数据与Spark系统 1

1.2关系模型与SQL语言 3

1.3Spark SQL发展历程 4

1.4本章小结 5

第2章 Spark基础知识介绍 6

2.1RDD编程模型 6

2.2DataFrame与Dataset 9

2.3本章小结 10

第3章 Spark SQL执行全过程概述 11

3.1从SQL到RDD:一个简单的案例 11

3.2重要概念 14

3.2.1InternalRow体系 14

3.2.2TreeNode体系 15

3.2.3Expression体系 17

3.3内部数据类型系统 20

3.4本章小结 21

第4章 Spark SQL编译器Parser 22

4.1DSL工具之ANTLR简介 22

4.1.1基于ANTLR4的计算器 23

4.1.2访问者模式 25

4.2SparkSqlParser之AstBuilder 28

4.3常见SQL生成的抽象语法树概览 30

4.4本章小结 33

第5章 Spark SQL逻辑计划(LogicalPlan) 34

5.1Spark SQL逻辑计划概述 34

5.2LogicalPlan简介 35

5.2.1QueryPlan概述 35

5.2.2LogicalPlan基本操作与分类 37

5.2.3LeafNode类型的LogicalPlan 38

5.2.4UnaryNode类型的LogicalPlan 39

5.2.5BinaryNode类型的LogicalPlan 40

5.2.6其他类型的LogicalPlan 41

5.3AstBuilder机制:Unresolved LogicalPlan生成 41

5.4Analyzer机制:Analyzed LogicalPlan生成 46

5.4.1Catalog体系分析 46

5.4.2Rule体系 48

5.4.3Analyzed LogicalPlan生成过程 50

5.5Spark SQL优化器Optimizer 56

5.5.1Optimizer概述 56

5.5.2Optimizer规则体系 57

5.5.3Optimized LogicalPlan的生成过程 62

5.6本章小结 64

第6章 Spark SQL物理计划 (PhysicalPlan) 66

6.1Spark SQL物理计划概述 66

6.2SparkPlan简介 67

6.2.1LeafExecNode类型 68

6.2.2UnaryExecNode类型 69

6.2.3BinaryExecNode类型 70

6.2.4其他类型的SparkPlan 70

6.3Metadata与Metrics体系 71

6.4Partitioning与Ordering体系 72

6.4.1Distribution与Partitioning的概念 72

6.4.2SparkPlan的常用分区排序操作 76

6.5SparkPlan生成 77

6.5.1物理计划Strategy体系 79

6.5.2常见Strategy分析 81

6.6执行前的准备 83

6.6.1PlanSubqueries规则 84

6.6.2EnsureRequirements规则 85

6.7本章小结 89

第7章 Spark SQL之Aggregation实现 90

7.1Aggregation执行概述 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.2DeclarativeAggregate聚合函数 100

7.2.3ImperativeAggregate聚合函数 101

7.2.4Typed ImperativeAggregate聚合函数 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.1OLAP多维分析背景 120

7.5.2Spark SQL多维查询 121

7.5.3多维分析LogicalPlan阶段 123

7.5.4多维分析PhysicalPlan与执行 126

7.6本章小结 128

第8章 Spark SQL之Join实现 129

8.1Join查询概述 129

8.2文法定义与抽象语法树 130

8.3Join查询逻辑计划 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.4Join查询物理计划 140

8.4.1Join物理计划的生成 140

8.4.2Join物理计划的选取 141

8.5Join查询执行 143

8.5.1Join执行基本框架 143

8.5.2BroadcastJoinExec执行机制 144

8.5.3ShuffledHashJoinExec执行机制 145

8.5.4SortMergeJoinExec执行机制 148

8.6本章小结 155

第9章 Tungsten技术实现 156

9.1内存管理与二进制处理 156

9.1.1Spark内存管理基础 156

9.1.2Tungsten内存管理优化基础 174

9.1.3Tungsten内存优化应用 179

9.2缓存敏感计算(Cache-aware computation) 185

9.3动态代码生成(Code generation) 188

9.3.1漫谈代码生成 188

9.3.2Janino编译器实践 190

9.3.3基本(表达式)代码生成 191

9.3.4全阶段代码生成(WholeStageCodegen) 196

9.4本章小结 211

第10章 Spark SQL连接Hive 212

10.1Spark SQL连接Hive概述 212

10.2Hive相关的规则和策略 213

10.2.1HiveSessionCatalog体系 213

10.2.2Analyzer之Hive-Specific分析规则 216

10.2.3SparkPlanner之Hive-Specific转换策略 217

10.2.4Hive相关的任务执行 218

10.3Spark SQL与Hive数据类型 219

10.3.1Hive数据类型与SerDe框架 219

10.3.2DataTypeTolnspector与Data Wrapping 220

10.3.3lnspectorToDataType与Data Unwrapping 221

10.4Hive UDF管理机制 223

10.5Spark Thrift Server实现 225

10.5.1Service体系 227

10.5.2Operation与OperationManager 228

10.5.3Session与SessionManager 232

10.5.4Authentication安全认证管理 234

10.5.5Spark Thrift Server执行流程 235

10.6本章小结 239

第11章 Spark SQL开发与实践 240

11.1腾讯大数据平台(TDW)简介 240

11.2腾讯大数据平台SQL引擎(TDW-SQL-Engine) 241

11.2.1SQL-Engine背景与演化历程 241

11.2.2SQL-Engine整体架构 242

11.3TDW-Spark SQL开发与优化 244

11.3.1业务运行支撑框架 244

11.3.2新功能开发案例 248

11.3.3性能优化开发案例 256

11.4业务实践经验与教训 261

11.4.1Spark SQL集群管理的经验 261

11.4.2Spark SQL业务层面调优 263

11.4.3SQL写法的“陷阱” 268

11.5本章小结 271

总结 272

参考文献 273