Spark大數據分析——源碼解析與實例詳解( 簡體 字) | |
作者:劉景澤 | 類別:1. -> 程式設計 -> Spark |
出版社:電子工業出版社 | 3dWoo書號: 51575 詢問書籍請說出此書號! 有庫存 NT售價: 445 元 |
出版日:7/1/2019 | |
頁數:436 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787121370519 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第1篇 準備
第1章 認識大數據和Spark 2 1.1 大數據的介紹 2 1.2 Apache Spark能做什么 3 1.3 其他分布式數據處理框架 4 1.4 如何使用本書 4 ∣1.4.1 需要提前具備的基礎 4 ∣1.4.2 準備相關開發環境 4 ∣1.4.3 如何學習本書 5 - 第2章 安裝與配置Spark集群 6 2.1 下載Spark安裝包 6 2.2 檢查與準備集群環境 7 2.3 了解目前集群中已經部署的框架服務 11 2.4 部署Spark集群 12 ∣2.4.1 實例1:基于Standalone模式部署Spark集群 12 ∣2.4.2 實例2:部署Spark的歷史服務——Spark History Server 16 ∣2.4.3 實例3:基于Standalone模式部署高可用的Master服務 18 ∣2.4.4 實例4:基于YARN模式部署Spark集群 20 ∣2.4.5 Standalone模式與YARN模式的特點 22 2.5 本章小結 23 - 第3章 第1個Spark程序 24 3.1 運行第1個Spark程序 24 ∣3.1.1 實例5:基于Standalone模式運行第1個Spark程序 24 ∣3.1.2 實例6:基于YARN模式運行第1個Spark程序 27 ∣3.1.3 提交Spark程序時的參數規范 30 3.2 使用spark-shell編寫并運行WordCount程序 30 ∣3.2.1 實例7:啟動spark-shell 31 ∣3.2.2 實例8:在spark-shell中編寫WordCount程序 32 3.3 使用IDEA編寫并運行WordCount程序 34 ∣3.3.1 實例9:準備開發環境,并構建代碼工程 34 ∣3.3.2 實例10:使用IDEA編寫WordCount程序 41 ∣3.3.3 實例11:在IDEA中本地運行WordCount程序 44 ∣3.3.4 實例12:在IDEA中遠程運行WordCount程序 46 ∣3.3.5 實例13:打包程序,并提交至集群運行 48 3.4 本章小結 49 = 第2篇 入門 - 第4章 讀寫分布式數據——基于Spark Core 52 4.1 RDD的誕生 52 4.2 進一步理解RDD 53 ∣4.2.1 數據存儲 53 ∣4.2.2 數據分析 55 ∣4.2.3 程序調度 56 4.3 讀取數據并生成RDD 57 ∣4.3.1 實例14:讀取普通文本數據 58 ∣4.3.2 實例15:讀取JSON格式的數據 59 ∣4.3.3 實例16:讀取CSV、TSV格式的數據 61 ∣4.3.4 實例17:讀取SequenceFile格式的數據 62 ∣4.3.5 實例18:讀取Object格式的數據 64 ∣4.3.6 實例19:讀取HDFS中的數據——顯式調用Hadoop API 66 ∣4.3.7 實例20:讀取MySQL數據庫中的數據 68 4.4 保存RDD中的數據到外部存儲 70 ∣4.4.1 實例21:保存成普通文本文件 70 ∣4.4.2 實例22:保存成JSON文件 71 ∣4.4.3 實例23:保存成CSV、TSV文件 73 ∣4.4.4 實例24:保存成SequenceFile文件 74 ∣4.4.5 實例25:保存成Object文件 75 ∣4.4.6 實例26:保存成HDFS文件——顯式調用Hadoop API的方式 76 ∣4.4.7 實例27:寫入MySQL數據庫 78 4.5 本章小結 80 - 第5章 處理分布式數據——基于Spark Core 81 5.1 RDD的轉換(transformations)操作——轉換數據形態 81 ∣5.1.1 實例28:基礎轉換操作 81 ∣5.1.2 實例29:鍵值對轉換操作 103 5.2 RDD的行動(actions)操作——觸發執行任務計劃 115 ∣5.2.1 實例30:基礎行動操作 116 ∣5.2.2 實例31:鍵值對行動操作 125 ∣5.2.3 實例32:數值行動操作 127 5.3 本章小結 128 = 第3篇 進階 - 第6章 RDD的高級操作 130 6.1 緩存RDD 130 ∣6.1.1 緩存RDD的基礎知識 130 ∣6.1.2 實例33:緩存與釋放RDD 133 6.2 RDD的檢查點(Checkpoint)機制 139 ∣6.2.1 了解Checkpoint機制 139 ∣6.2.2 實例34:使用Checkpoint機制 141 ∣6.2.3 Checkpoint機制的工作流程 144 6.3 RDD的依賴關系 145 ∣6.3.1 窄依賴(narrow dependencies) 145 ∣6.3.2 寬依賴(wide/shuffle dependencies) 148 ∣6.3.3 實例35:讓子RDD混合依賴依賴多個父RDD 151 ∣6.3.4 實例36:詞頻統計——總結運算過程涉及的概念 153 6.4 累加器(Accumulator) 155 ∣6.4.1 認識累加器 155 ∣6.4.2 實例37:使用系統累加器1——長整數、雙精度浮點數累加器 156 ∣6.4.3 實例38:使用系統累加器2——集合累加器 159 ∣6.4.4 實例39:自定義累加器 160 6.5 廣播(Broadcast)——將數據塊緩存到所有節點 164 ∣6.5.1 認識廣播 165 ∣6.5.2 實例40:使用廣播補全數據 165 6.6 本章小結 168 - 第7章 用SQL語法分析結構化數據——基于Spark SQL 169 7.1 為什么會產生Spark SQL 169 7.2 認識DataFrame與Dataset數據類型 170 ∣7.2.1 認識DataFrame 170 ∣7.2.2 認識Dataset 171 7.3 實例41:通過Dataset、DataFrame分析用戶數據 172 ∣7.3.1 用spark-shell編寫程序 172 ∣7.3.2 用IDEA編寫程序 175 7.4 不同Spark版本的操作差異 177 ∣7.4.1 認識SQLContext與HiveContext 178 ∣7.4.2 認識SparkSession 178 7.5 DataFrame、Dataset的基本操作 179 ∣7.5.1 DSL與SQL的語法風格 179 ∣7.5.2 使用臨時視圖的注意事項 181 ∣7.5.3 實例42:讀取JSON、CSV格式的數據 183 ∣7.5.4 實例43:讀取Parquet格式的數據 185 ∣7.5.5 實例44:讀取代碼中動態生成的數據 185 ∣7.5.6 實例45:讀取關系型數據庫中的數據 188 ∣7.5.7 實例46:輸出Dataset、DataFrame中的數據 189 ∣7.5.8 實例47:RDD、DataFrame、Dataset之間的相互轉換 192 7.6 用戶自定義函數 195 ∣7.6.1 實例48:實現“一進一出”的UDF 195 ∣7.6.2 實例49:實現“多進一出”的UDAF 198 ∣7.6.3 實例50:實現“一進多出”的UDTF 208 7.7 集成Spark SQL與Hive 211 ∣7.7.1 已經部署Hive框架 211 ∣7.7.2 尚未部署Hive框架 215 7.8 本章小結 215 - 第8章 實時處理流式數據——基于Spark Streaming 216 8.1 為什么會產生Spark Streaming 216 8.2 第1個Spark Streaming程序 216 ∣8.2.1 實例51:用spark-shell編寫程序 216 ∣8.2.2 實例52:用IDEA編寫程序 221 8.3 什么是DStream 222 ∣8.3.1 認識DStream 222 ∣8.3.2 認識DStreamGraph 223 8.4 讀取數據到DStream中 227 ∣8.4.1 實例53:讀取HDFS文件夾中的數據 227 ∣8.4.2 實例54:讀取RDD組成的數據隊列 229 ∣8.4.3 實例55:實時讀取Flume中的數據 230 ∣8.4.4 實例56:用高階API實時讀取Kafka中的數據 235 ∣8.4.5 實例57:用低階API實時讀取Kafka中的數據 242 8.5 Spark Streaming中的幾個時間概念 251 ∣8.5.1 批處理間隔 251 ∣8.5.2 窗口時間寬度與滑動時間寬度 252 ∣8.5.3 實例58:使用窗口操作,每兩秒鐘統計10秒內的平均溫度 254 8.6 DStream的操作總結 259 ∣8.6.1 DStream的操作說明 259 ∣8.6.2 實例59:直接面向DStream中的RDD進行數據分析 261 ∣8.6.3 實例60:將DStream中的數據實時輸出至外部存儲系統 263 ∣8.6.4 實例61:對Dstream進行join操作 267 8.7 DStream中的轉換分類 269 ∣8.7.1 無狀態轉換 269 ∣8.7.2 有狀態轉換 270 ∣8.7.3 實例:用有狀態轉換做全局詞頻統計 270 8.8 在Spark Streaming中的緩存與Checkpoint 272 ∣8.8.1 認識Spark Streaming中的Checkpoint 273 ∣8.8.2 實例62:使用Spark Streaming中的Checkpoint 273 8.9 Spark Streaming中的累加器與廣播變量 276 ∣8.9.1 認識累加器與廣播變量 276 ∣8.9.2 實例63:自定義累加器,并結合無狀態轉換,實現實時的全局詞頻統計 276 8.10 關閉Spark Streaming程序 280 ∣8.10.1 關閉程序的方案 281 ∣8.10.2 實例64:合理關閉一個運行中的Spark Streaming程序 281 8.11 本章小結 284 = 第4篇 高階 - 第9章 實時處理流式數據——基于Structured Streaming 286 9.1 為什么會產生Structured Streaming 286 9.2 第1個Structured Streaming程序 287 ∣9.2.1 實例65:用spark-shell編寫程序 287 ∣9.2.2 實例66:用IDEA編寫程序 289 9.3 Structured Streaming的編程模型 291 9.4 輸入數據——生成Streaming Dataset、 Streaming DataFrame 292 ∣9.4.1 實例67:根據文件生成工作流 292 ∣9.4.2 實例68:根據文件、文件夾生成自動分區的工作流 295 ∣9.4.3 實例69:根據Kafka以Streaming模式生成工作流 297 ∣9.4.4 實例70:以Kafka為數據源,通過Batch方式生成工作流 300 ∣9.4.5 實例71:根據指定速率生成工作流 304 9.5 基于事件時間的窗口操作 305 ∣9.5.1 事件時間窗口的工作方式 305 ∣9.5.2 實例72:事件時間窗口的生成規則 307 ∣9.5.3 實例73:基于事件時間窗口實現詞頻統計 311 9.6 基于Watermark處理延遲數據 314 ∣9.6.1 Watermark的作用 314 ∣9.6.2 實例74:基于Update模式實現詞頻統計,并結合Watermark處理延遲數據 314 ∣9.6.3 實例75:基于Append模式實現詞頻統計,并結合Watermark處理延遲數據 320 ∣9.6.4 Watermark的底層工作原理 322 ∣9.6.5 總結:Watermark機制與輸出模式 329 9.7 實例76:在處理流式數據時去除重復數據 330 9.8 Structured Streaming中的join操作 332 ∣9.8.1 實例77:在Stream-Static模式下的inner join操作 333 ∣9.8.2 實例78:在Stream-Stream模式下的inner join操作 335 ∣9.8.3 總結:已經支持的join操作 340 9.9 在Structured Streaming中實現數據分組, 并手動維護分組狀態 341 ∣9.9.1 實例79:通過mapGroupsWithState實現數據分組,并手動維護分組狀態 341 ∣9.9.2 實例80:通過flatMapGroupsWithState實現數據分組,并手動維護分組狀態 347 ∣9.9.3 總結:手動維護狀態與Watermark的使用技巧 352 9.10 輸出分析結果 353 ∣9.10.1 輸出模式(Output Mode)的使用場景 353 ∣9.10.2 實例81:基于File Sink輸出數據 354 ∣9.10.3 實例82:基于Kafka Sink,以Streaming方式輸出數據 356 ∣9.10.4 實例83:基于Kafka Sink,以Batch方式輸出數據 358 ∣9.10.5 實例84:基于Console Sink輸出數據 360 ∣9.10.6 實例85:基于Memory Sink輸出數據 360 ∣9.10.7 實例86:基于Foreach Sink輸出數據 362 ∣9.10.8 實例87:基于ForeachBatch Sink輸出數據 367 ∣9.10.9 總結:不同Sink所適用的輸出模式 369 9.11 Trigger觸發器的分類 370 9.12 管理與監控工作流 370 ∣9.12.1 管理工作流 370 ∣9.12.2 監控工作流 372 9.13 Structured Streaming中的Checkpoint機制 372 9.14 連續處理模式——Continuous Processing 373 9.15 本章小結 374 - 第10章 Spark的相關優化 375 10.1 優化Spark程序 375 ∣10.1.1 實例88:盡可能減少或避免出現Shuffle過程 375 ∣10.1.2 實例89:使用Kryo作為序列化方案 377 ∣10.1.3 盡可能批量操作數據 381 ∣10.1.4 合理設置分區數 381 ∣10.1.5 合理設置批處理間隔 381 10.2 優化數據 382 ∣10.2.1 關于數據傾斜 382 ∣10.2.2 實例90:使用自定義Partitioner緩解數據傾斜 383 ∣10.2.3 關于數據補全 387 10.3 調優資源 388 10.4 本章小結 390 = 第5篇 商業項目實戰 - 第11章 實戰:學生學習情況分析系統 392 11.1 項目概述 392 ∣11.1.1 業務背景 392 ∣11.1.2 劃分業務模塊 392 11.2 開發環境說明 393 11.3 項目實現 394 ∣11.3.1 構建工程 394 ∣11.3.2 模擬數據 395 ∣11.3.3 實時發送數據到Kafka 399 ∣11.3.4 實時分析平臺答題數據 402 ∣11.3.5 構建推薦模型 405 ∣11.3.6 實時推薦題目 411 ∣11.3.7 離線學情分析 415 11.4 本章小結 422 講解了網絡大數據時代應運而生的、能高效迅捷地分析處理數據的工具——Spark,它帶領讀者快速掌握用 Spark 收集、計算、簡化和保存海量數據的方法,學會交互、迭代和增量式分析,解決分區、數據本地化和自定義序列化等問題。
|