Spark SQL内核剖析 作者:朱锋 出版时间:2018年版内容简介 Spark SQL 是 Spark 技术体系中较有影响力的应用(Killer application),也是 SQL-on-Hadoop 解决方案 中举足轻重的产品。《Spark SQL内核剖析》由 11 章构成,从源码层面深入介绍 Spark SQL 内部实现机制,以及在实际业务场 景中的开发实践,其中包括 SQL 编译实现、逻辑计划的生成与优化、物理计划的生成与优化、Aggregation 算子和 Join 算子的实现与执行、Tungsten 优化技术、生产环境中的一些改造优化经验等。 《Spark SQL内核剖析》不属于入门级教程,需要读者对基本概念有一定的了解。在企业中任职的系统架构师和软件开发人员,以及对大数据、分布式计算和数据库系统实现感兴趣的研究人员,均适合阅读《Spark SQL内核剖析》。目录第 1 章 Spark SQL 背景1.1 大数据与 Spark 系统1.2 关系模型与 SQL 语言1.3 Spark SQL 发展历程1.4 本章小结第 2 章 Spark 基础知识介绍2.1 RDD 编程模型2.2 DataFrame 与 Dataset2.3 本章小结第 3 章 Spark SQL 执行全过程概述3.1 从 SQL 到 RDD:一个简单的案例3.2 重要概念3.2.1 InternalRow 体系3.2.2 TreeNode 体系3.2.3 Expression 体系3.3 内部数据类型系统3.4 本章小结第 4 章 Spark SQL 编译器 Parser4.1 DSL 工具之 ANTLR 简介4.1.1 基于 ANTLR 4 的计算器4.1.2 访问者模式4.2 SparkSqlParser 之 AstBuilder4.3 常见 SQL 生成的抽象语法树概览4.4 本章小结第 5 章 Spark SQL 逻辑计划(LogicalPlan)5.1 Spark SQL 逻辑计划概述5.2 LogicalPlan 简介5.2.1 QueryPlan 概述5.2.2 LogicalPlan 基本操作与分类5.2.3 LeafNode 类型的 LogicalPlan5.2.4 UnaryNode 类型的 LogicalPlan5.2.5 BinaryNode 类型的 LogicalPlan5.2.6 其他类型的 LogicalPlan5.3 AstBuilder 机制:Unresolved LogicalPlan 生成5.4 Analyzer 机制:Analyzed LogicalPlan 生成5.4.1 Catalog 体系分析5.4.2 Rule 体系5.4.3 Analyzed LogicalPlan 生成过程5.5 Spark SQL 优化器 Optimizer5.5.1 Optimizer 概述5.5.2 Optimizer 规则体系5.5.3 Optimized LogicalPlan 的生成过程5.6 本章小结第 6 章 Spark SQL 物理计划(PhysicalPlan)6.1 Spark SQL 物理计划概述6.2 SparkPlan 简介6.2.1 LeafExecNode 类型6.2.2 UnaryExecNode 类型6.2.3 BinaryExecNode 类型6.2.4 其他类型的 SparkPlan6.3 Metadata 与 Metrics 体系6.4 Partitioning 与 Ordering 体系6.4.1 Distribution 与 Partitioning 的概念6.4.2 SparkPlan 的常用分区排序操作6.5 SparkPlan 生成6.5.1 物理计划 Strategy 体系6.5.2 常见 Strategy 分析6.6 执行前的准备6.6.1 PlanSubqueries 规则6.6.2 EnsureRequirements 规则6.7 本章小结第 7 章 Spark SQL 之 Aggregation 实现7.1 Aggregation 执行概述7.1.1 文法定义7.1.2 聚合语句 Unresolved LogicalPlan 生成7.1.3 从逻辑算子树到物理算子树7.2 聚合函数(AggregateFunction)7.2.1 聚合缓冲区与聚合模式(AggregateMode)7.2.2 DeclarativeAggregate 聚合函数7.2.3 ImperativeAggregate 聚合函数7.2.4 TypedImperativeAggregate 聚合函数7.3 聚合执行7.3.1 执行框架 AggregationIterator7.3.2 基于排序的聚合算子 SortAggregateExec7.3.3 基于 Hash 的聚合算子 HashAggregateExec7.4 窗口(Window)函数7.4.1 窗口函数定义与简介7.4.2 窗口函数相关表达式7.4.3 窗口函数的逻辑计划阶段与物理计划阶段7.4.4 窗口函数的执行7.5 多维分析7.5.1 OLAP 多维分析背景7.5.2 Spark SQL 多维查询7.5.3 多维分析 LogicalPlan 阶段7.5.4 多维分析 PhysicalPlan 与执行7.6 本章小结第 8 章 Spark SQL 之 Join 实现8.1 Join 查询概述8.2 文法定义与抽象语法树8.3 Join 查询逻辑计划8.3.1 从 AST 到 Unresolved LogicalPlan8.3.2 从 Unresolve LogicalPlan 到 Analyzed LogicalPlan8.3.3 从 Analyzed LogicalPlan 到 Optimized LogicalPlan8.4 Join 查询物理计划8.4.1 Join 物理计划的生成8.4.2 Join 物理计划的选取8.5 Join 查询执行8.5.1 Join 执行基本框架8.5.2 BroadcastJoinExec 执行机制8.5.3 ShuffledHashJoinExec 执行机制8.5.4 SortMergeJoinExec 执行机制8.6 本章小结第 9 章 Tungsten 技术实现9.1 内存管理与二进制处理9.1.1 Spark 内存管理基础9.1.2 Tungsten 内存管理优化基础9.1.3 Tungsten 内存优化应用9.2 缓存敏感计算(Cache-aware computation)9.3 动态代码生成(Code generation)9.3.1 漫谈代码生成9.3.2 Janino 编译器实践9.3.3 基本(表达式)代码生成9.3.4 全阶段代码生成(WholeStageCodegen)9.4 本章小结第 10 章 Spark SQL 连接 Hive10.1 Spark SQL 连接 Hive 概述10.2 Hive 相关的规则和策略10.2.1 HiveSessionCatalog 体系10.2.2 Analyzer 之 Hive-Specific 分析规则10.2.3 SparkPlanner 之 Hive-Specific 转换策略10.2.4 Hive 相关的任务执行10.3 Spark SQL 与 Hive 数据类型10.3.1 Hive 数据类型与 SerDe 框架10.3.2 DataTypeToInspector 与 Data Wrapping10.3.3 InspectorToDataType 与 Data Unwrapping10.4 Hive UDF 管理机制10.5 Spark Thrift Server 实现10.5.1 Service 体系10.5.2 Operation 与 OperationManager10.5.3 Session 与 SessionManager10.5.4 Authentication 安全认证管理10.5.5 Spark Thrift Server 执行流程10.6 本章小结第 11 章 Spark SQL 开发与实践11.1 腾讯大数据平台(TDW)简介11.2 腾讯大数据平台 SQL 引擎(TDW-SQL-Engine)11.2.1 SQL-Engine 背景与演化历程11.2.2 SQL-Engine 整体架构11.3 TDW-Spark SQL 开发与优化11.3.1 业务运行支撑框架11.3.2 新功能开发案例11.3.3 性能优化开发案例11.4 业务实践经验与教训11.4.1 Spark SQL 集群管理的经验11.4.2 Spark SQL 业务层面调优11.4.3 SQL 写法的“陷阱”11.5 本章小结总结参考文献 上一篇: React Native 精解与实战 邱鹏源 2018年版 下一篇: Spring Boot2企业应用实战 疯狂软件 2018年版