Spark大數據分析——源碼解析與實例詳解 | 被動收入的投資秘訣 - 2024年9月

Spark大數據分析——源碼解析與實例詳解

作者:劉景澤
出版社:電子工業
出版日期:2019年08月01日
ISBN:9787121370519
語言:繁體中文
售價:534元

講解了網絡大數據時代應運而生的、能高效迅捷地分析處理資料的工具——Spark,它帶領讀者快速掌握用 Spark 收集、計算、簡化和保存海量資料的方法,學會交互、反覆運算和增量式分析,解決分區、資料當地語系化和自訂序列化等問題。
 

劉景澤
 
全棧工程師,長期從事大數據的研發工作,擁有豐富的大數據開發經驗。 曾擔任多家知名企的主力研發,並負責大數據雲服務元件開發。 精通Java、Scala、Python等多種程式設計語言,擅長大數據生態圈的研發、演算法、逆向工程等技術。 為多家企業提供技術支持,並長期面向企業一線開發人員分享實戰經驗。
 

第1篇 準備

第1章 認識大數據和Spark2
1.1 大數據的介紹2
1.2 Apache Spark能做什麼3
1.3 其他分散式數據處理框架4
1.4 如何使用本書4
O1.4.1 需要提前具備的基礎4
O1.4.2 準備相關開發環境4
O1.4.3 如何學習本書5

第2章 安裝與配置Spark集群6
2.1 下載Spark安裝包6
2.2 檢查與準備集群環境7
2.3 瞭解目前集群中已經部署的框架服務11
2.4 部署Spark集群12
O2.4.1 實例1:基於Standalone模式部署Spark集群12
O2.4.2 實例2:部署Spark的歷史服務——Spark History Server16
O2.4.3 實例3:基於Standalone模式部署高可用的Master服務18
O2.4.4 實例4:基於YARN模式部署Spark集群20
O2.4.5 Standalone模式與YARN模式的特點22
2.5 本章小結23

第3章 第1個Spark程式24
3.1 運行第1個Spark程式24
O3.1.1 實例5:基於Standalone模式運行第1個Spark程式24
O3.1.2 實例6:基於YARN模式運行第1個Spark程式27
O3.1.3 提交Spark程式時的參數規範30
3.2 使用spark-shell編寫並運行WordCount程式30
O3.2.1 實例7:啟動spark-shell31
O3.2.2 實例8:在spark-shell中編寫WordCount程式32
3.3 使用IDEA編寫並運行WordCount程式34
O3.3.1 實例9:準備開發環境,並構建代碼工程34
O3.3.2 實例10:使用IDEA編寫WordCount程式41
O3.3.3 實例11:在IDEA中本地運行WordCount程式44
O3.3.4 實例12:在IDEA中遠端運行WordCount程式46
O3.3.5 實例13:打包程式,並提交至集群運行48
3.4 本章小結49

第2篇 入門

第4章 讀寫分散式數據——基於Spark Core52
4.1 RDD的誕生52
4.2 進一步理解RDD53
O4.2.1 數據存儲53
O4.2.2 數據分析55
O4.2.3 程式調度56
4.3 讀取數據並生成RDD57
O4.3.1 實例14:讀取普通文本數據58
O4.3.2 實例15:讀取JSON格式的數據59
O4.3.3 實例16:讀取CSV、TSV格式的數據61
O4.3.4 實例17:讀取SequenceFile格式的數據62
O4.3.5 實例18:讀取Object格式的數據64
O4.3.6 實例19:讀取HDFS中的數據——顯式調用Hadoop API66
O4.3.7 實例20:讀取MySQL數據庫中的數據68
4.4 保存RDD中的數據到外部存儲70
O4.4.1 實例21:保存成普通文字檔70
O4.4.2 實例22:保存成JSON檔71
O4.4.3 實例23:保存成CSV、TSV檔73
O4.4.4 實例24:保存成SequenceFile檔74
O4.4.5 實例25:保存成Object檔75
O4.4.6 實例26:保存成HDFS檔——顯式調用Hadoop API的方式76
O4.4.7 實例27:寫入MySQL數據庫78
4.5 本章小結80

第5章 處理分散式數據——基於Spark Core81
5.1 RDD的轉換(transformations)操作——轉換數據形態81
O5.1.1 實例28:基礎轉換操作81
O5.1.2 實例29:鍵值對轉換操作103
5.2 RDD的行動(actions)操作——觸發執行任務計畫115
O5.2.1 實例30:基礎行動操作116
O5.2.2 實例31:鍵值對行動操作125
O5.2.3 實例32:數值行動操作127
5.3 本章小結128

第3篇 進階

第6章 RDD的高級操作130
6.1 緩存RDD130
O6.1.1 緩存RDD的基礎知識130
O6.1.2 實例33:緩存與釋放RDD133
6.2 RDD的檢查點(Checkpoint)機制139
O6.2.1 瞭解Checkpoint機制139
O6.2.2 實例34:使用Checkpoint機制141
O6.2.3 Checkpoint機制的工作流程144
6.3 RDD的依賴關係145
O6.3.1 窄依賴(narrow dependencies)145
O6.3.2 寬依賴(wide/shuffle dependencies)148
O6.3.3 實例35:讓子RDD混合依賴依賴多個父RDD151
O6.3.4 實例36:詞頻統計——總結運算過程涉及的概念153
6.4 累加器(Accumulator)155
O6.4.1 認識累加器155
O6.4.2 實例37:使用系統累加器1——長整數、雙精度浮點數累加器156
O6.4.3 實例38:使用系統累加器2——集合累加器159
O6.4.4 實例39:自訂累加器160
6.5 廣播(Broadcast)——將數據塊緩存到所有節點164
O6.5.1 認識廣播165
O6.5.2 實例40:使用廣播補全數據165
6.6 本章小結168

第7章 用SQL語法分析結構化數據——基於Spark SQL169
7.1 為什麼會產生Spark SQL169
7.2 認識DataFrame與Dataset數據類型170
O7.2.1 認識DataFrame170
O7.2.2 認識Dataset171
7.3 實例41:通過Dataset、DataFrame分析用戶數據172
O7.3.1 用spark-shell編寫程式172
O7.3.2 用IDEA編寫程式175
7.4 不同Spark版本的操作差異177
O7.4.1 認識SQLContext與HiveContext178
O7.4.2 認識SparkSession178
7.5 DataFrame、Dataset的基本操作179
O7.5.1 DSL與SQL的語法風格179
O7.5.2 使用臨時視圖的注意事項181
O7.5.3 實例42:讀取JSON、CSV格式的數據183
O7.5.4 實例43:讀取Parquet格式的數據185
O7.5.5 實例44:讀取代碼中動態生成的數據185
O7.5.6 實例45:讀取關聯式數據庫中的數據188
O7.5.7 實例46:輸出Dataset、DataFrame中的數據189
O7.5.8 實例47:RDD、DataFrame、Dataset之間的相互轉換192
7.6 使用者自訂函數195
O7.6.1 實例48:實現“一進一出”的UDF195
O7.6.2 實例49:實現“多進一出”的UDAF198
O7.6.3 實例50:實現“一進多出”的UDTF208
7.7 集成Spark SQL與Hive211
O7.7.1 已經部署Hive框架211
O7.7.2 尚未部署Hive框架215
7.8 本章小結215

第8章 即時處理流式數據——基於Spark Streaming216
8.1 為什麼會產生Spark Streaming216
8.2 第1個Spark Streaming程式216
O8.2.1 實例51:用spark-shell編寫程式216
O8.2.2 實例52:用IDEA編寫程式221
8.3 什麼是DStream222
O8.3.1 認識DStream222
O8.3.2 認識DStreamGraph223
8.4 讀取數據到DStream中227
O8.4.1 實例53:讀取HDFS資料夾中的數據227
O8.4.2 實例54:讀取RDD組成的數據佇列229
O8.4.3 實例55:即時讀取Flume中的數據230
O8.4.4 實例56:用高階API即時讀取Kafka中的數據235
O8.4.5 實例57:用低階API即時讀取Kafka中的數據242
8.5 Spark Streaming中的幾個時間概念251
O8.5.1 批次處理間隔251
O8.5.2 窗口時間寬度與滑動時間寬度252
O8.5.3 實例58:使用視窗操作,每兩秒鐘統計10秒內的平均溫度254
8.6 DStream的操作總結259
O8.6.1 DStream的操作說明259
O8.6.2 實例59:直接面向DStream中的RDD進行數據分析261
O8.6.3 實例60:將DStream中的數據即時輸出至外部存儲系統263
O8.6.4 實例61:對Dstream進行join操作267
8.7 DStream中的轉換分類269
O8.7.1 無狀態轉換269
O8.7.2 有狀態轉換270
O8.7.3 實例:用有狀態轉換做全域詞頻統計270
8.8 在Spark Streaming中的緩存與Checkpoint272
O8.8.1 認識Spark Streaming中的Checkpoint273
O8.8.2 實例62:使用Spark Streaming中的Checkpoint273
8.9 Spark Streaming中的累加器與廣播變數276
O8.9.1 認識累加器與廣播變數276
O8.9.2 實例63:自訂累加器,並結合無狀態轉換,實現即時的全域詞頻統計276
8.10 關閉Spark Streaming程式280
O8.10.1 關閉程式的方案281
O8.10.2 實例64:合理關閉一個運行中的Spark Streaming程式281
8.11 本章小結284

第4篇 高階

第9章 即時處理流式數據——基於Structured Streaming286
9.1 為什麼會產生Structured Streaming286
9.2 第1個Structured Streaming程式287
O9.2.1 實例65:用spark-shell編寫程式287
O9.2.2 實例66:用IDEA編寫程式289
9.3 Structured Streaming的程式設計模型291
9.4 輸入數據——生成Streaming Dataset、 Streaming DataFrame292
O9.4.1 實例67:根據檔生成工作流292
O9.4.2 實例68:根據檔、資料夾生成自動分區的工作流295
O9.4.3 實例69:根據Kafka以Streaming模式生成工作流297
O9.4.4 實例70:以Kafka為數據源,通過Batch方式生成工作流300
O9.4.5 實例71:根據指定速率生成工作流304
9.5 基於事件時間的視窗操作305
O9.5.1 事件時間視窗的工作方式305
O9.5.2 實例72:事件時間視窗的生成規則307
O9.5.3 實例73:基於事件時間視窗實現詞頻統計311
9.6 基於Watermark處理延遲數據314
O9.6.1 Watermark的作用314
O9.6.2 實例74:基於Update模式實現詞頻統計,並結合Watermark處理延遲數據314
O9.6.3 實例75:基於Append模式實現詞頻統計,並結合Watermark處理延遲數據320
O9.6.4 Watermark的底層工作原理322
O9.6.5 總結:Watermark機制與輸出模式329
9.7 實例76:在處理流式數據時去除重複數據330
9.8 Structured Streaming中的join操作332
O9.8.1 實例77:在Stream-Static模式下的inner join操作333
O9.8.2 實例78:在Stream-Stream模式下的inner join操作335
O9.8.3 總結:已經支持的join操作340
9.9 在Structured Streaming中實現數據分組, 並手動維護分組狀態3
 


相關書籍