Spark大數據分析實戰
內容描述
本書作為Spark的入門書,從Spark核心編程語言Scala講起,涵蓋當前Spark主流的開發組件。以實操為主,深入講解每一個操作步驟,包括Spark RDD離線數據處理、Spark SQL快速結構化數據處理、Spark Streaming實時數據處理,同時包括案例講解、源碼剖析、常用Shell命令和Java API詳解。即使沒有任何Spark基礎的讀者也可以對照書中的步驟成功搭建屬於自己的Spark集群,是一本真正的實操指南書籍。本書可作為大數據開發人員的隨身手冊,也可作為Spark新手入門的指導書籍,以及大數據從業者的參考用書。
目錄大綱
目 錄
第1章 Spark開發準備——Scala基礎 1
1.1 什麽是SCALA 1
1.2 安裝SCALA 2
1.2.1 在Windows中安裝Scala 2
1.2.2 在CentOS 7中安裝Scala 3
1.3 SCALA基礎 4
1.3.1 變量聲明 4
1.3.2 數據類型 5
1.3.3 表達式 7
1.3.4 循 環 8
1.3.5 方法與函數 10
1.4 集 合 14
1.4.1 數 組 14
1.4.2 List 16
1.4.3 Map映射 17
1.4.4 元 組 19
1.4.5 Set 20
1.5 類和對象 21
1.5.1 類的定義 21
1.5.2 單例對象 22
1.5.3 伴生對象 22
1.5.4 get和set方法 23
1.5.5 構造器 25
1.6 抽象類和特質 28
1.6.1 抽象類 28
1.6.2 特 質 30
1.7 使用ECLIPSE創建SCALA項目 31
1.7.1 安裝Scala for Eclipse IDE 31
1.7.2 創建Scala項目 33
1.8 使用INTELLIJ IDEA創建SCALA項目 33
1.8.1 在IDEA中安裝Scala插件 34
1.8.2 創建Scala項目 37
第2章 初識Spark 40
2.1 大數據開發總體架構 40
2.2 什麽是SPARK 42
2.3 SPARK主要組件 43
2.4 SPARK運行時架構 45
2.4.1 YARN集群架構 45
2.4.2 Spark Standalone架構 49
2.4.3 Spark On YARN架構 50
2.5 SPARK集群搭建與測試 53
2.5.1 Spark Standalone模式的集群搭建 53
2.5.2 Spark On YARN模式的集群搭建 55
2.5.3 Spark HA的搭建 56
2.6 SPARK應用程序的提交 60
2.7 SPARK SHELL的使用 63
第3章 Spark RDD彈性分佈式數據集 66
3.1 什麽是RDD 66
3.2 創建RDD 67
3.2.1 從對象集合創建RDD 67
3.2.2 從外部存儲創建RDD 68
3.3 RDD的算子 69
3.3.1 轉化算子 69
3.3.2 行動算子 77
3.4 RDD的分區 78
3.4.1 分區數量 79
3.4.2 自定義分區器 88
3.5 RDD的依賴 93
3.5.1 窄依賴 94
3.5.2 寬依賴 94
3.5.3 Stage劃分 95
3.6 RDD的持久化 97
3.6.1 存儲級別 98
3.6.2 查看緩存 100
3.7 RDD的檢查點 102
3.8 共享變量 104
3.8.1 廣播變量 104
3.8.2 累加器 106
3.9 案例分析:SPARK RDD實現單詞計數 107
3.10 案例分析:SPARK RDD實現分組求TOPN 116
3.11 案例分析:SPARK RDD實現二次排序 120
3.12 案例分析:SPARK RDD計算成績平均分 124
3.13 案例分析:SPARK RDD倒排索引統計每日新增用戶 126
3.14 案例分析:SPARK RDD讀寫HBASE 130
3.14.1 讀取HBase表數據 131
3.14.2 寫入HBase表數據 134
3.15 案例分析:SPARK RDD數據傾斜問題解決 143
3.15.1 數據傾斜的常用解決方法 144
3.15.2 使用隨機key進行雙重聚合 145
3.15.3 WebUI查看Spark歷史作業 149
第4章 Spark內核源碼分析 151
4.1 SPARK集群啟動原理分析 151
4.2 SPARK應用程序提交原理分析 162
4.3 SPARK作業工作原理分析 175
4.3.1 MapReduce的工作原理 175
4.3.2 Spark作業工作的原理 177
4.4 SPARK檢查點原理分析 191
第5章 Spark SQL結構化數據處理引擎 196
5.1 什麽是SPARK SQL 196
5.2 DATAFRAME和DATASET 197
5.3 SPARK SQL的基本使用 198
5.4 SPARK SQL數據源 201
5.4.1 基本操作 201
5.4.2 Parquet文件 206
5.4.3 JSON數據集 209
5.4.4 Hive表 211
5.4.5 JDBC 213
5.5 SPARK SQL內置函數 214
5.5.1 自定義函數 216
5.5.2 自定義聚合函數 218
5.5.3 開窗函數 220
5.6 案例分析:使用SPARK SQL實現單詞計數 223
5.7 案例分析:SPARK SQL與HIVE整合 228
5.7.1 整合Hive的步驟 228
5.7.2 操作Hive的幾種方式 231
5.8 案例分析:SPARK SQL讀寫MYSQL 233
5.9 案例分析:SPARK SQL每日UV統計 238
5.10 案例分析:SPARK SQL熱點搜索詞統計 241
5.11 綜合案例:SPARK SQL智慧交通數據分析 244
5.11.1 項目介紹 244
5.11.2 數據準備 246
5.11.3 統計正常卡口數量 249
5.11.4 統計車流量排名前3的卡口號 249
5.11.5 統計車輛高速通過的卡口TOP5 250
5.11.6 統計每個卡口通過速度最快的前3輛車 254
5.11.7 車輛軌跡分析 255
第6章 Kafka分佈式消息系統 256
6.1 什麽是KAFKA 256
6.2 KAFKA架構 257
6.3 主題與分區 259
6.4 分區副本 260
6.5 消費者組 262
6.6 數據存儲機制 264
6.7 集群環境搭建 266
6.8 命令行操作 268
6.8.1 創建主題 268
6.8.2 查詢主題 269
6.8.3 創建生產者 269
6.8.4 創建消費者 270
6.9 JAVA API操作 271
6.9.1 創建Java工程 271
6.9.2 創建生產者 271
6.9.3 創建消費者 273
6.9.4 運行程序 275
6.10 案例分析:KAFKA生產者攔截器 277
第7章 Spark Streaming實時流處理引擎 285
7.1 什麽是SPARK STREAMING 285
7.2 SPARK STREAMING工作原理 286
7.3 輸入DSTREAM和RECEIVER 287
7.4 第一個SPARK STREAMING程序 288
7.5 SPARK STREAMING數據源 290
7.5.1 基本數據源 290
7.5.2 高級數據源 292
7.5.3 自定義數據源 293
7.6 DSTREAM操作 297
7.6.1 無狀態操作 297
7.6.2 狀態操作 299
7.6.3 窗口操作 300
7.6.4 輸出操作 302
7.6.5 緩存及持久化 303
7.6.6 檢查點 304
7.7 案例分析:SPARK STREAMING按批次累加單詞數量 306
7.8 案例分析: SPARK STREAMING整合KAFKA計算實時單詞數量 311
7.9 案例分析:SPARK STREAMING實時用戶日誌黑名單過濾 318
7.10 綜合案例:微博用戶行為分析 322
第8章 Structured Streaming結構化流處理引擎 325
8.1 什麽是STRUCTURED STREAMING 325
8.2 STRUCTURED STREAMING單詞計數 326
8.3 STRUCTURED STREAMING編程模型 328
8.4 STRUCTURED STREAMING查詢輸出 330
8.5 STRUCTURED STREAMING窗口操作 334
8.5.1 事件時間 334
8.5.2 窗口聚合單詞計數 335
8.5.3 延遲數據和水印 339
8.6 案例分析:STRUCTURED STREAMING整合KAFKA實現單詞計數 343
第9章 GraphX圖計算引擎 347
9.1 什麽是GRAPHX 347
9.2 第一個GRAPHX程序 348
9.3 GRAPHX數據結構 352
9.4 GRAPHX圖操作 352
9.4.1 基本操作 352
9.4.2 屬性操作 355
9.4.3 結構操作 357
9.4.4 連接操作 359
9.4.5 聚合操作 362
9.5 案例分析:使用GRAPHX計算社交網絡中粉絲的平均年齡 363