作譯者:朱鋒,張韶全,黃明
出版時間:2018-08
千 字 數:376
版次:01-01
頁 數:268
開本:16開裝幀:I S B N :9787121343148
換版:
經過多年的發展,大數據處理技術逐步成熟。作為業界大數據計算的事實標準,Apache Spark系統已經廣泛套用於各大企業與研究機構,並形成完整的生態系統。Spark系統包含了SQL、GraphX和R等各個子系統以支持不同業務領域的需求。作為傳統關係資料庫/數據倉庫在大數據場景下的解決方案,Spark SQL已經成為了業界的重要選擇方案,同時也成為了Spark開源社區中最為活躍的部分。本書聚焦於Spark SQL系統,對其整體架構、內部各個模組的技術實現機制進行源碼級別的剖析,涉及到SQL編譯、邏輯計畫、物理執行計畫、重要查詢(如Aggregation與Join等)的技術細節。此外,本書內容上還會結合生產環境的海量套用,分享大量真實開發案例與實踐最佳化經驗。
第 1 章 Spark SQL 背景
1.1 大數據與 Spark 系統
1.2 關係模型與 SQL 語言
1.3 Spark SQL 發展歷程
1.4 本章小結
第 2 章 Spark 基礎知識介紹
2.1 RDD 編程模型
2.2 DataFrame 與 Dataset
2.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 編譯器 Parser
4.1 DSL 工具之 ANTLR 簡介
4.1.1 基於 ANTLR 4 的計算器
4.1.2 訪問者模式
4.2 SparkSqlParser 之 AstBuilder
4.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 類型的 LogicalPlan
5.2.4 UnaryNode 類型的 LogicalPlan
5.2.5 BinaryNode 類型的 LogicalPlan
5.2.6 其他類型的 LogicalPlan
5.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 最佳化器 Optimizer
5.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 其他類型的 SparkPlan
6.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 執行框架 AggregationIterator
7.3.2 基於排序的聚合運算元 SortAggregateExec
7.3.3 基於 Hash 的聚合運算元 HashAggregateExec
7.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 LogicalPlan
8.3.2 從 Unresolve LogicalPlan 到 Analyzed LogicalPlan
8.3.3 從 Analyzed LogicalPlan 到 Optimized LogicalPlan
8.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 連線 Hive
10.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 Wrapping
10.3.3 InspectorToDataType 與 Data Unwrapping
10.4 Hive UDF 管理機制
10.5 Spark Thrift Server 實現
10.5.1 Service 體系
10.5.2 Operation 與 OperationManager
10.5.3 Session 與 SessionManager
10.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 本章小結
總結
參考文獻