Spark SQL内核剖析

《Spark SQL内核剖析》

  • 出版社:电子工业出版社
  • ISBN:9787121343148
  • 版次:1
  • 商品编码:12415659
  • 品牌:博文视点
  • 包装:平装
  • 开本:16开
  • 出版时间:2018-08-01
  • 用纸:胶版纸
  • 页数:268
  • 字数:376000
  • 正文语种:中文
基本介绍书籍目录点评信息
  • 书籍内容

    Spark SQL 是 Spark 技术体系中较有影响力的应用(Killer application),也是 SQL-on-Hadoop 解决方案 中举足轻重的产品。《Spark SQL内核剖析》由 11 章构成,从源码层面深入介绍 Spark SQL 内部实现机制,以及在实际业务场 景中的开发实践,其中包括 SQL 编译实现、逻辑计划的生成与优化、物理计划的生成与优化、Aggregation 算子和 Join 算子的实现与执行、Tungsten 优化技术、生产环境中的一些改造优化经验等。
    《Spark SQL内核剖析》不属于入门级教程,需要读者对基本概念有一定的了解。在企业中任职的系统架构师和软件开发人员,以及对大数据、分布式计算和数据库系统实现感兴趣的研究人员,均适合阅读《Spark SQL内核剖析》。

    编辑推荐

    适读人群 :系统架构师和软件开 发人员,以及对大数据、分布式计算和数据库系统实现感兴趣的研究人员
    √ 揭秘Spark SQL内部架构、算法设计与实现原理,从源码实现层面掌握数据库SQL处理与Spark分布式计算模型。
    √ 作为SQL-on-Hadoop解决方案的佼佼者,Spark SQL志在取代传统数据仓库,在数据库应用场景中其模块一直备受关注。
    √ 腾讯T4专家|Spark领军人物黄明领衔,长期从事分布式计算和查询优化方面工作,对Spark SQL有较深入研究及大量工程积累。
    √ 分享腾讯日均百万SQL总量和数百PB数据处理的一线生产实践,其中披露TDW经验对大数据平台建设和性能优化有重要借鉴意义。
    √ 适合要对原生系统进行定制化改造或新特性添加的开发人员,以及想通过理解系统背后核心知识学习分布式系统和数据库实现等技术的从业者。

    作者简介

    朱锋,博士毕业于中科院软件所,研究方向为分布式计算与软件工程。长期关注数据分析、数据库技术和大数据相关系统,并积极参与开源社区贡献。2017年加入腾讯,负责Spark SQL相关平台的开发、优化和维护工作,在SQL-on-Hadoop方面积累了丰富的经验。
    张韶全,香港中文大学博士,博士期间研究方向为系统优分布式算法。曾任香港应用研究院研究员、联想香港研发中心高级研究员。现任腾讯大数据平台高级研发工程师,负责腾讯大数据SQL平台的建设与研发,平台规模达到上万台服务器,百万级别业务量,PB级日数据计算量,支撑着腾讯全公司的数据分析业务,拥有多年互联网公司一线的大数据平台设计与研发经验。旨在传播大数据技术和实践经验,使其在不同行业落地生根。
    黄明,腾讯T4专家,Spark中国区早期研究者和布道者之一。
  • 第 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 本章小结总结参考文献
  • 精彩书评

    Spark SQL 大大降低了数据分析人员使用 Spark 系统进行大数据处理的门槛。然而,相比网络社区的快速发展,相关的参考资料目前仍然比较匮乏,特别缺少对内部原理的深入解读。本书从源码层面给出了 Spark SQL 从解析、优化到执行的全部图景,是难得的进阶图书。
    周亮 百度高级工程师
    本书作者长期从事分布式计算和查询优化方面的工作,对Spark SQL有较深入的研究及大量的工程积累。书中内容注重主线,从大量代码中提炼出纲要并按照模块展开,有点有面。读者在阅读过程中既能够从宏观上了然于胸,也能在特定的技术点深入其中。此外,作者分享的 TDW 实践经验对大数据平台建设和性能优化有着很重要的借鉴意义。
    罗涛 小米人工智能与云平台研发工程师
    Spark SQL 是 Spark 生态圈中较活跃的部分,是近年来 SQL-on-Hadoop 解决方案中的佼佼者。本书深入地分析了 Spark SQL 的内部实现原理,更难能可贵的是,本书作者还分享了在大规模生产环境中的实践经验,干货非常多。我相信,无论是新手还是老手,都能够从中获益。
    张呈刚(www.linkedin.com/in/chenggangschool) AWS 资深解决方案架构师
    本书适合掌握了一些基础知识的读者,如果你不满足于只知道 Spark SQL 是什么,而是想了解更多的实现原理,以及SQL 这种声明式语言如何变为最终的 RDD 计算模型,那么本书将为你系统地答疑解惑。读者可以通过本书学习分布式系统和数据库实现等技术,理解系统背后的核心知识。
    赵鑫 声智科技高级工程师
    这是一本 Spark 高阶玩家的晋级宝典。作者深入浅出地剖析了 Spark SQL 的内部架构、算法设计与实现原理,让读者从知其然到知其所以然,从了解 Spark、用好 Spark 到真正精通改造 Spark。
    朱雷(www.linkedin.com/in/lei-zhu-a4a63756) iGola 骑鹅旅行首席架构师
    目前,同类书籍一般从 Spark 本身入手顺带涉及 SQL 模块的内容,但是在数据库的应用场景中,SQL 模块往往是用户和开发人员较关注的部分。本书正是以此为目标的进阶型图书,对于想对原生系统进行定制化改造的研发人员来说,这是一本实用的好书。
    田斐 Oracle 工程师
    本书结合前沿科研成果和一线工程实践,深入探讨了 Spark SQL 内部的原理,并分享了腾讯日均百万 SQL 总量和数百 PB 数据处理能力的平台建设经验。内容清晰而简明,讲解透彻而不枯燥,许多章节内容可提升读者触类旁通的能力。书中的背景概述等介绍有着学术论文的严谨,细节部分则适合结合源码参照理解。
    纪树平 德国慕尼黑工业大学博士,AMZN软件工程师
微信公众号

热门文章

更多