本書以Python作為開發(fā)Spark應(yīng)用程序的編程語言,系統(tǒng)介紹了Spark編程的基礎(chǔ)知識。全書共8章,內(nèi)容包括大數(shù)據(jù)技術(shù)概述、Spark的設(shè)計與運(yùn)行原理、Spark環(huán)境搭建和使用方法、RDD編程、Spark SQL、Spark Streaming、Structured Streaming、Spark MLlib等。
1.本書是廈門大學(xué)作者團(tuán)隊長期經(jīng)驗(yàn)總結(jié)的結(jié)晶。本書是在廈門大學(xué)《大數(shù)據(jù)技術(shù)原理與應(yīng)用》入門級大數(shù)據(jù)教材的基礎(chǔ)之上編寫的。為了確保教程質(zhì)量,在編著出版紙質(zhì)教材之前,實(shí)驗(yàn)室已經(jīng)于2016年10月通過實(shí)驗(yàn)室官網(wǎng)免費(fèi)發(fā)布共享了簡化版的Spark在線教程和相關(guān)教學(xué)資源,同時,該在線教程也已經(jīng)用于廈門大學(xué)計算機(jī)科學(xué)系研究生的大數(shù)據(jù)課程教學(xué),并成為全國高校大數(shù)據(jù)課程教師培訓(xùn)交流班的授課內(nèi)容。實(shí)驗(yàn)室根據(jù)讀者對在線Spark教程的大量反饋意見以及教學(xué)實(shí)踐中發(fā)現(xiàn)的問題,對Spark在線教程進(jìn)行了多次修正和完善,所有這些前期準(zhǔn)備工作,都為紙質(zhì)教材的編著出版打下了堅實(shí)的基礎(chǔ)。
披荊斬棘,在大數(shù)據(jù)叢林中開辟學(xué)習(xí)捷徑
填溝削坎,為快速學(xué)習(xí)Spark 技術(shù)鋪平道路
深入淺出,有效降低Spark 技術(shù)學(xué)習(xí)門檻
資源全面,構(gòu)建全方位一站式在線服務(wù)體系
林子雨,博士(畢業(yè)于北京大學(xué)),現(xiàn)為廈門大學(xué)計算機(jī)科學(xué)系助理教授,全國高校知名大數(shù)據(jù)教師,廈門大學(xué)數(shù)據(jù)庫實(shí)驗(yàn)室負(fù)責(zé)人,榮獲2013年度和2017年度廈門大學(xué)獎教金、2018年廈門大學(xué)高等教育教學(xué)成果特等獎、2018年福建省高等教育教學(xué)成果二等獎和2018年國家精品在線開放課程,中國計算機(jī)學(xué)會數(shù)據(jù)庫專委會委員,中國計算機(jī)學(xué)會信息系統(tǒng)專委會委員。曾任廈門大學(xué)信息科學(xué)與技術(shù)學(xué)院院長助理、晉江市發(fā)展和改革局副局長。主要研究方向?yàn)閿?shù)據(jù)庫、數(shù)據(jù)倉庫、數(shù)據(jù)挖掘、大數(shù)據(jù),并以第一作者身份在《軟件學(xué)報》《計算機(jī)學(xué)報》和《計算機(jī)研究與發(fā)展》等國家重點(diǎn)期刊以及國際學(xué)術(shù)會議上發(fā)表多篇學(xué)術(shù)論文。作為項(xiàng)目負(fù)責(zé)人主持的科研項(xiàng)目包括1項(xiàng)國家自然科學(xué)青年基金項(xiàng)目(No.61303004)、1項(xiàng)福建省自然科學(xué)青年基金項(xiàng)目(No.2013J05099)和1項(xiàng)中央高;究蒲袠I(yè)務(wù)費(fèi)項(xiàng)目(No.2011121049),主持的教改課題包括1項(xiàng)2016年福建省教改課題和1項(xiàng)2016年教育部產(chǎn)學(xué)協(xié)作育人項(xiàng)目。編著出版了國內(nèi)高校第一本系統(tǒng)介紹大數(shù)據(jù)知識的專業(yè)教材《大數(shù)據(jù)技術(shù)原理與應(yīng)用》,被國內(nèi)眾多高校采用作為開課教材,并成為京東、**網(wǎng)等網(wǎng)店暢銷書籍。建設(shè)了國內(nèi)高校**大數(shù)據(jù)課程公共服務(wù)平臺,為教師教學(xué)和學(xué)生學(xué)習(xí)大數(shù)據(jù)課程提供全方位、一站式服務(wù),成為國內(nèi)高校大數(shù)據(jù)教學(xué)****,平臺每年訪問量超過100萬次。
第1 章 大數(shù)據(jù)技術(shù)概述 1
1.1 大數(shù)據(jù)概念與關(guān)鍵技術(shù) 2
1.1.1 大數(shù)據(jù)的概念 2
1.1.2 大數(shù)據(jù)關(guān)鍵技術(shù) 2
1.2 代表性大數(shù)據(jù)技術(shù) 4
1.2.1 Hadoop 4
1.2.2 Spark 8
1.2.3 Flink 10
1.2.4 Beam 11
1.3 編程語言的選擇 12
1.4 在線資源 13
1.5 本章小結(jié) 14
1.6 習(xí)題 14
實(shí)驗(yàn)1 Linux 系統(tǒng)的安裝和常用命令 15
第2 章 Spark 的設(shè)計與運(yùn)行原理 17
2.1 概述 18
2.2 Spark 生態(tài)系統(tǒng) 19
2.3 Spark 運(yùn)行架構(gòu) 21
2.3.1 基本概念 21
2.3.2 架構(gòu)設(shè)計 21
2.3.3 Spark 運(yùn)行基本流程 22
2.3.4 RDD 的設(shè)計與運(yùn)行原理 24
2.4 Spark 的部署方式 33
2.5 本章小結(jié) 34
2.6 習(xí)題 34
第3 章 Spark 環(huán)境搭建和使用方法 35
3.1 安裝Spark 36
3.1.1 基礎(chǔ)環(huán)境 36
3.1.2 下載安裝文件 36
3.1.3 配置相關(guān)文件 38
3.1.4 驗(yàn)證Spark 是否安裝成功 39
3.1.5 Spark 和Hadoop 的交互 39
3.2 在pyspark 中運(yùn)行代碼 40
3.2.1 pyspark 命令 40
3.2.2 啟動pyspark 41
3.3 開發(fā)Spark 獨(dú)立應(yīng)用程序 42
3.3.1 編寫程序 42
3.3.2 通過spark-submit 運(yùn)行程序 43
3.4 Spark 集群環(huán)境搭建 44
3.4.1 集群概況 44
3.4.2 搭建Hadoop 集群 44
3.4.3 在集群中安裝Spark 45
3.4.4 配置環(huán)境變量 45
3.4.5 Spark 的配置 46
3.4.6 啟動Spark 集群 47
3.4.7 關(guān)閉Spark 集群 47
3.5 在集群上運(yùn)行Spark 應(yīng)用程序 48
3.5.1 啟動Spark 集群 48
3.5.2 采用獨(dú)立集群管理器 48
3.5.3 采用Hadoop YARN 管理器 49
3.6 本章小結(jié) 51
3.7 習(xí)題 51
實(shí)驗(yàn)2 Spark 和Hadoop 的安裝 51
第4 章 RDD 編程 53
4.1 RDD 編程基礎(chǔ) 54
4.1.1 RDD 創(chuàng)建 54
4.1.2 RDD 操作 56
4.1.3 持久化 63
4.1.4 分區(qū) 64
4.1.5 一個綜合實(shí)例 69
4.2 鍵值對RDD 71
4.2.1 鍵值對RDD 的創(chuàng)建 71
4.2.2 常用的鍵值對轉(zhuǎn)換操作 72
4.2.3 一個綜合實(shí)例 78
4.3 數(shù)據(jù)讀寫 79
4.3.1 文件數(shù)據(jù)讀寫 79
4.3.2 讀寫HBase 數(shù)據(jù) 82
4.4 綜合實(shí)例 86
4.4.1 求TOP 值 86
4.4.2 文件排序 89
4.4.3 二次排序 91
4.5 本章小結(jié) 94
4.6 習(xí)題 95
實(shí)驗(yàn)3 RDD 編程初級實(shí)踐 95
第5 章 Spark SQL 98
5.1 Spark SQL 簡介 99
5.1.1 從Shark 說起 99
5.1.2 Spark SQL 架構(gòu) 100
5.1.3 為什么推出Spark SQL 101
5.2 DataFrame 概述 101
5.3 DataFrame 的創(chuàng)建 102
5.4 DataFrame 的保存 103
5.5 DataFrame 的常用操作 104
5.6 從RDD 轉(zhuǎn)換得到DataFrame 105
5.6.1 利用反射機(jī)制推斷RDD 模式 106
5.6.2 使用編程方式定義RDD 模式 107
5.7 使用Spark SQL 讀寫數(shù)據(jù)庫 108
5.7.1 準(zhǔn)備工作 109
5.7.2 讀取MySQL 數(shù)據(jù)庫中的數(shù)據(jù) 109
5.7.3 向MySQL 數(shù)據(jù)庫寫入數(shù)據(jù) 110
5.8 本章小結(jié) 111
5.9 習(xí)題 112
實(shí)驗(yàn)4 Spark SQL 編程初級實(shí)踐 112
第6 章 Spark Streaming 115
6.1 流計算概述 116
6.1.1 靜態(tài)數(shù)據(jù)和流數(shù)據(jù) 116
6.1.2 批量計算和實(shí)時計算 117
6.1.3 流計算概念 117
6.1.4 流計算框架 118
6.1.5 流計算處理流程 119
6.2 Spark Streaming 121
6.2.1 Spark Streaming 設(shè)計 121
6.2.2 Spark Streaming 與Storm 的對比 122
6.2.3 從“Hadoop+Storm”架構(gòu)轉(zhuǎn)向Spark 架構(gòu) 122
6.3 DStream 操作概述 123
6.3.1 Spark Streaming 工作機(jī)制 123
6.3.2 編寫Spark Streaming 程序的基本步驟 124
6.3.3 創(chuàng)建StreamingContext 對象 124
6.4 基本輸入源 125
6.4.1 文件流 125
6.4.2 套接字流 127
6.4.3 RDD 隊列流 131
6.5 高級數(shù)據(jù)源 133
6.5.1 Kafka 簡介 133
6.5.2 Kafka 準(zhǔn)備工作 133
6.5.3 Spark 準(zhǔn)備工作 135
6.5.4 編寫Spark Streaming 程序使用Kafka 數(shù)據(jù)源 136
6.6 轉(zhuǎn)換操作 137
6.6.1 DStream 無狀態(tài)轉(zhuǎn)換操作 137
6.6.2 DStream 有狀態(tài)轉(zhuǎn)換操作 138
6.7 輸出操作 143
6.7.1 把DStream 輸出到文本文件中 143
6.7.2 把DStream 寫入到關(guān)系數(shù)據(jù)庫中 145
6.8 本章小結(jié) 147
6.9 習(xí)題 147
實(shí)驗(yàn)5 Spark Streaming 編程初級實(shí)踐 147
第7 章 Structured Streaming 150
7.1 概述 151
7.1.1 基本概念 151
7.1.2 兩種處理模型 152
7.1.3 Structured Streaming 和Spark SQL、Spark Streaming 的關(guān)系 154
7.2 編寫Structured Streaming程序的基本步驟 154
7.2.1 實(shí)現(xiàn)步驟 154
7.2.2 測試運(yùn)行 156
7.3 輸入源 158
7.3.1 File 源 158
7.3.2 Kafka 源 163
7.3.3 Socket 源 167
7.3.4 Rate 源 167
7.4 輸出操作 169
7.4.1 啟動流計算 169
7.4.2 輸出模式 170
7.4.3 輸出接收器 170
7.5 容錯處理 173
7.5.1 從檢查點(diǎn)恢復(fù)故障 173
7.5.2 故障恢復(fù)中的限制 173
7.6 遲到數(shù)據(jù)處理 174
7.6.1 事件時間 174
7.6.2 遲到數(shù)據(jù) 175
7.6.3 水印 176
7.6.4 多水印規(guī)則 177
7.6.5 處理遲到數(shù)據(jù)的實(shí)例 178
7.7 查詢的管理和監(jiān)控 181
7.7.1 管理和監(jiān)控的方法 181
7.7.2 一個監(jiān)控的實(shí)例 182
7.8 本章小結(jié) 184
7.9 習(xí)題 185
實(shí)驗(yàn)6 Structured Streaming編程實(shí)踐 185
第8章 Spark MLlib 187
8.1 基于大數(shù)據(jù)的機(jī)器學(xué)習(xí) 188
8.2 機(jī)器學(xué)習(xí)庫MLlib 概述 189
8.3 基本數(shù)據(jù)類型 190
8.3.1 本地向量 190
8.3.2 標(biāo)注點(diǎn) 191
8.3.3 本地矩陣 192
8.4 機(jī)器學(xué)習(xí)流水線 193
8.4.1 流水線的概念 193
8.4.2 流水線工作過程 193
8.5 特征提取、轉(zhuǎn)換和選擇 195
8.5.1 特征提取 195
8.5.2 特征轉(zhuǎn)換 199
8.5.3 特征選擇 204
8.5.4 局部敏感哈!205
8.6 分類算法 205
8.6.1 邏輯斯蒂回歸分類器 206
8.6.2 決策樹分類器 212
8.7 聚類算法 217
8.7.1 K-Means 聚類算法 218
8.7.2 GMM 聚類算法 220
8.8 協(xié)同過濾算法 223
8.8.1 推薦算法的原理 223
8.8.2 ALS 算法 224
8.9 模型選擇和超參數(shù)調(diào)整 228
8.9.1 模型選擇工具 229
8.9.2 用交叉驗(yàn)證選擇模型 229
8.10 本章小結(jié) 232
8.11 習(xí)題 233
實(shí)驗(yàn)7 Spark 機(jī)器學(xué)習(xí)庫MLlib編程實(shí)踐 233
參考文獻(xiàn) 235