目 錄
第一部分 入門篇
第1章 初識Spark SQL 3
1.1 Spark SQL的前世今生 3
1.2 Spark SQL能做什么 4
第2章 Spark安裝、編程環(huán)境搭建以及打包提交 6
2.1 Spark的簡易安裝 6
2.2 準備編寫Spark應用程序的IDEA環(huán)境 10
2.3 將編寫好的Spark應用程序打包成jar提交到Spark上 18
第二部分 基礎篇
第3章 Spark上的RDD編程 23
3.1 RDD基礎 24
3.1.1 創(chuàng)建RDD 24
3.1.2 RDD轉化操作、行動操作 24
3.1.3 惰性求值 25
3.1.4 RDD緩存概述 26
3.1.5 RDD基本編程步驟 26
3.2 RDD簡單實例—wordcount 27
3.3 創(chuàng)建RDD 28
3.3.1 程序內部數據作為數據源 28
3.3.2 外部數據源 29
3.4 RDD操作 33
3.4.1 轉化操作 34
3.4.2 行動操作 37
3.4.3 惰性求值 38
3.5 向Spark傳遞函數 39
3.5.1 傳入匿名函數 39
3.5.2 傳入靜態(tài)方法和傳入方法的引用 40
3.5.3 閉包的理解 41
3.5.4 關于向Spark傳遞函數與閉包的總結 42
3.6 常見的轉化操作和行動操作42
3.6.1 基本RDD轉化操作 43
3.6.2 基本RDD行動操作 48
3.6.3 鍵值對RDD 52
3.6.4 不同類型RDD之間的轉換 56
3.7 深入理解RDD 57
3.8 RDD 緩存、持久化 59
3.8.1 RDD緩存 59
3.8.2 RDD持久化 61
3.8.3 持久化存儲等級選取策略 63
3.9 RDD checkpoint容錯機制 64
第4章 Spark SQL編程入門 66
4.1 Spark SQL概述 66
4.1.1 Spark SQL是什么 66
4.1.2 Spark SQL通過什么來實現 66
4.1.3 Spark SQL 處理數據的優(yōu)勢 67
4.1.4 Spark SQL數據核心抽象——DataFrame 67
4.2 SparkSQL編程入門示例 69
4.2.1 程序主入口:SparkSession 69
4.2.2 創(chuàng)建 DataFrame 70
4.2.3 DataFrame基本操作 70
4.2.4 執(zhí)行SQL查詢 72
4.2.5 全局臨時表 73
4.2.6 Dataset 73
4.2.7 將RDDs轉化為DataFrame 75
4.2.8 用戶自定義函數 78
第5章 Spark SQL的DataFrame操作大全 82
5.1 由JSON文件生成所需的DataFrame對象 82
5.2 DataFrame上的行動操作 84
5.3 DataFrame上的轉化操作 91
5.3.1 where條件相關 92
5.3.2 查詢指定列 94
5.3.3 思維開拓:Column的巧妙應用 99
5.3.4 limit操作 102
5.3.5 排序操作:order by和sort 103
5.3.6 group by操作 106
5.3.7 distinct、dropDuplicates去重操作 107
5.3.8 聚合操作 109
5.3.9 union合并操作 110
5.3.10 join操作 111
5.3.11 獲取指定字段統(tǒng)計信息 114
5.3.12 獲取兩個DataFrame中共有的記錄 116
5.3.13 獲取一個DataFrame中有另一個DataFrame中沒有的記錄 116
5.3.14 操作字段名 117
5.3.15 處理空值列 118
第6章 Spark SQL支持的多種數據源 121
6.1 概述 121
6.1.1 通用load/save 函數 121
6.1.2 手動指定選項 123
6.1.3 在文件上直接進行SQL查詢 123
6.1.4 存儲模式 123
6.1.5 持久化到表 124
6.1.6 bucket、排序、分區(qū)操作 124
6.2 典型結構化數據源 125
6.2.1 Parquet 文件 125
6.2.2 JSON 數據集 129
6.2.3 Hive表 130
6.2.4 其他數據庫中的數據表 133
第三部分 實踐篇
第7章 Spark SQL 工程實戰(zhàn)之基于WiFi探針的商業(yè)大數據分析技術139
7.1 功能需求 139
7.1.1 數據收集 139
7.1.2 數據清洗 140
7.1.3 客流數據分析 141
7.1.4 數據導出 142
7.2 系統(tǒng)架構 142
7.3 功能設計 143
7.4 數據庫結構 144
7.5 本章小結 144
第8章 第一個Spark SQL應用程序 145
8.1 完全分布式環(huán)境搭建 145
8.1.1 Java 環(huán)境配置 145
8.1.2 Hadoop 安裝配置 146
8.1.3 Spark安裝配置 149
8.2 數據清洗 150
8.3 數據處理流程 153
8.4 Spark程序遠程調試 164
8.4.1 導出jar包 164
8.4.2 IDEA配置 168
8.4.3 服務端配置 170
8.5 Spark的Web界面 171
8.6 本章小結 172
第四部分 優(yōu)化篇
第9章 讓Spark程序再快一點 175
9.1 Spark執(zhí)行流程 175
9.2 Spark內存簡介 176
9.3 Spark的一些概念 177
9.4 Spark編程四大守則 178
9.5 Spark調優(yōu)七式 183
9.6 解決數據傾斜問題 192
9.7 Spark 執(zhí)行引擎 Tungsten 簡介 195
9.8 Spark SQL解析引擎Catalyst 簡介 197
9.9 本章小結 200