內容簡介
《普通高等院校數據科學與大數據技術專業“十三五”規劃教材:Spark大數據編程基礎(Scala版)》主要參照“數據科學與大數據技術”本科專業的培養方案,綜合考慮專業的來源,如從計算機類專業、數學統計類專業以及經濟類專業發展而來,同時適當兼顧了專科類偏向實際套用的特點。《普通高等院校數據科學與大數據技術專業“十三五”規劃教材:Spark大數據編程基礎(Scala版)》成體系的介紹了Spark大數據編程技術,本書分為三個部分共10章,從“Spark環境介紹”開始(包括Spark的背景和運行架構),以“Spark編程入門基礎”為承接(包括Scala語言編程基礎、Scala面向對象編程和彈性分散式數據集編程)、最後具體到每一個“Spark編程組件”(包括Spark SQL、Spark Streaming、Spark GraphX和Spark ML)。本書在編寫過程中力求深入淺出,重點突出,儘可能方便不同專業背景和知識層次的讀者閱讀。而且注重理論聯繫實際,注重能力培養,訓練學生掌握知識、運用知識分析並解決實際問題的能力,以滿足學生今後就業或科研的需求。
第一部分包含第1~2章,講述了“Spark的開發環境”部分。
其中,第1章對Spark的背景和運行架構進行了概述;第2章對Spark開發環境的搭建進行了詳細介紹。這是學習後續章節的基礎。
第二部分包含了第3~5章,講述了“Spark編程入門基礎”部分,重點介紹了Scala編程基礎和彈性分散式數據集(Resilient Distributed Dataset,
RDD)編程。
本書採用Scala程式語言,因此第3章和第4章分 別介紹了Scala語言基礎和Scala面向對象編程。彈性分散式數據集(ResilientDistributed Dataset,RDD)是Spark對數據的核心抽象,因此第5章介紹了RDD編程。
第三部分包含了第6~10章,講述了“Spark編程組件”部分,重點介紹了Spark SQL、Spark Streaming、Spark GraphX、Spark ML四個組件的編程。
其中,第6章介紹了Spark SQL,可以高效的處理結構化數據;第7章介紹了Spark Streaming,可以高效的處理流式數據;第8章介紹了Spark GraphX,可以高效的處理圖數據;第9章和第10章介紹了Spark ML,分別以Spark機器學習原理和Spark機器學習模型為重點進行介紹。
圖書目錄
第1章 Spark概述 1
1.1 Spark的背景 1
1.1.1 Spark發展史 1
1.1.2 Spark的特點 2
1.2 Spark生態系統 3
1.2.1 Spark Core 3
1.2.2 Spark SQL 4
1.2.3 Spark Streaming 4
1.2.4 GraphX 5
1.2.5 MLBase/MLlib 5
1.2.6 SparkR 5
1.3 Spark運行架構 6
1.3.1 相關術語 6
1.3.2 Spark架構 7
1.3.3 執行步驟 8
1.3.4 Spark運行模式 10
1.4 WordCount示例 13
1.4.1 三種程式語言的示例程式 13
1.4.2 Scala版本WordCount運行分析 16
1.4.3 WordCount中的類調用關係 18
1.5 本章小結 19
思考與習題 19
第2章 搭建Spark開發環境 20
2.1 Spark開發環境所需軟體 20
2.2 安裝Spark 21
2.2.1 spark-shell下的實例 25
2.2.2 SparkWEB的使用 26
2.3 IDEA 28
2.3.1 安裝IDEA 28
2.3.2 IDEA的實例(Scala) 32
2.3.3 IDEA打包運行 37
2.4 Eclipse 40
2.4.1 安裝Eclipse 40
2.4.2 Eclipse的實例(Scala)41
2.5 本章小結 46
思考與習題 47
第3章 Scala語言基礎 48
3.1 Scala簡介 48
3.1.1 Scala特點 48
3.1.2 Scala運行方式 48
3.2 變數與類型 50
3.2.1 變數的定義與使用 50
3.2.2 基本數據類型和操作 56
3.2.3 Range操作 61
3.3 程式控制結構 62
3.3.1 if條件表達式 62
3.3.2 循環表達式 66
3.3.3 匹配表達式 70
3.4 集合 73
3.4.1 數組 73
3.4.2 列表 78
3.4.3 集 81
3.4.4 映射 85
3.4.5 Option 90
3.4.6 疊代器與元組 92
3.5 函式式編程 95
3.5.1 函式 95
3.5.2 占位符語法 97
3.5.3 遞歸函式 99
3.5.4 嵌套函式 101
3.5.5 高階函式 102
3.5.6 高階函式的使用 104
3.6 本章小結 108
思考與習題 108
第4章 Scala面向對象編程 110
4.1 類與對象 110
4.1.1 定義類 110
4.1.2 創建對象 111
4.1.3 類成員的訪問 112
4.1.4 構造函式 113
4.1.5 常見對象類型 116
4.1.6 抽象類與匿名類 118
4.2 繼承與多態 120
4.2.1 類的繼承 121
4.2.2 構造函式執行順序 124
4.2.3 方法重寫 125
4.2.4 多態 127
4.3 特質(trait) 128
4.3.1 特質的使用 129
4.3.2 特質與類 132
4.3.3 多重繼承 135
4.4 導入與包 137
4.4.1 包 137
4.4.2 import高級特性 138
4.5 本章小結 141
思考與習題 141
第5章 RDD編程 143
5.1 RDD基礎 143
5.1.1 RDD的基本特徵 143
5.1.2 依賴關係 144
5.2 創建RDD 148
5.2.1 從已有集合創建RDD 148
5.2.2 從外部存儲創建RDD 149
5.3 RDD操作 150
5.3.1 Transformation操作 151
5.3.2 Action操作 159
5.3.3 不同類型RDD之間的轉換 166
5.4 數據的讀取與保存 168
5.5 RDD快取與容錯機制 170
5.5.1 RDD的快取機制(持久化) 170
5.5.2 RDD檢查點容錯機制 173
5.6 綜合實例 174
5.7 本章小結 179
思考與習題 180
第6章 Spark SQL 181
6.1 Spark SQL概述 181
6.1.1 Spark SQL架構 181
6.1.2 程式主入口SparkSession 182
6.1.3 DataFrame與RDD 184
6.2 創建DataFrame 185
6.2.1 從外部數據源創建DataFrame 185
6.2.2 RDD轉換為DataFrame 199
6.3 DataFrame操作 203
6.3.1 Transformation操作 204
6.3.2 Action操作 216
6.3.3 保存操作 219
6.4 Spark SQL實例 220
6.5 本章小結 226
思考與習題 226
第7章 Spark Streaming 228
7.1 Spark Streaming工作機制 228
7.1.1 Spark Streaming工作流程 228
7.1.2 Spark Streaming處理機制 229
7.2 DStream輸入源 230
7.2.1 基礎輸入源 230
7.2.2 高級輸入源 232
7.3 DStream轉換操作 233
7.3.1 無狀態轉換操作 233
7.3.2 有狀態轉換操作 234
7.4 DStream輸出操作 245
7.5 Spark Streaming處理流式數據 246
7.5.1 檔案流 246
7.5.2 RDD佇列流 248
7.5.3 套接字流 250
7.5.4 Kafka訊息佇列流 251
7.6 Spark Streaming性能調優 258
7.6.1 減少批處理時間 258
7.6.2 設定適合的批次大小 259
7.6.3 最佳化記憶體使用 259
7.7 本章小結 260
思考與習題 260
第8章 Spark GraphX 261
8.1 GraphX簡介 261
8.2 GraphX圖存儲 262
8.2.1 GraphX的RDD 262
8.2.2 GraphX圖分割 264
8.3 GraphX圖操作 265
8.3.1 構建圖操作 266
8.3.2 基本屬性操作 268
8.3.3 連線操作 270
8.3.4 轉換操作 271
8.3.5 結構操作 273
8.3.6 聚合操作 274
8.3.7 快取操作 275
8.3.8 Pregel API 276
8.4 內置的圖算法 279
8.4.1 PageRank 279
8.4.2 計算三角形數 282
8.4.3 計算連通分量 284
8.4.4 標籤傳播算法 285
8.4.5 SVD++ 286
8.5 GraphX實現經典圖算法 288
8.5.1 Dijkstra算法 288
8.5.2 TSP問題 291
8.5.3 最小生成樹問題 292
8.6 GraphX實例分析 294
8.6.1 尋找“最有影響力”論文 294
8.6.2 尋找社交媒體中的“影響力用戶” 296
8.7 本章小結 298
思考與習題 299
第9章 Spark機器學習原理 300
9.1 Spark機器學習簡介 300
9.2 ML Pipeline 301
9.2.1 Pipeline概念 301
9.2.2 Pipeline工作過程 302
9.2.3 Pipeline實例 303
9.3 Spark機器學習數據準備 310
9.3.1 特徵提取 310
9.3.2 特徵轉換 314
9.3.3 特徵選擇 319
9.4 算法調優 326
9.4.1 模型選擇 326
9.4.2 交叉驗證 326
9.4.3 TrainValidationSplit 329
9.5 本章小結 331
思考與習題 331
第10章 Spark機器學習模型 332
10.1 spark.ml分類模型 332
10.1.1 spark.ml分類模型簡介 332
10.1.2 樸素貝葉斯分類器 333
10.1.3 樸素貝葉斯分類器程式示例 335
10.2 回歸模型 337
10.2.1 spark.ml回歸模型簡介 338
10.2.2 線性回歸 338
10.2.3 線性回歸程式示例 341
10.3 決策樹 343
10.3.1 spark.ml決策樹模型簡介 343
10.3.2 決策樹分類 345
10.3.3 決策樹分類程式示例 347
10.3.4 決策樹回歸 350
10.3.5 決策樹回歸程式示例 354
10.4 聚類模型 357
10.4.1 spark.ml聚類模型簡介 358
10.4.2 K-means算法示例 360
10.4.3 K-means程式示例 362
10.5 頻繁模式挖掘 363
10.5.1 FP-Growth 364
10.5.2 FP-Growth算法示例 365
10.5.3 FP-Growth程式示例 367
10.6 本章小結 369
思考與習題 369
參考文獻 371