本書以Scala作為開發(fā)Spark應(yīng)用程序的編程語言,系統(tǒng)介紹了Spark編程的基礎(chǔ)知識。全書共8章,內(nèi)容包括大數(shù)據(jù)技術(shù)概述、Scala語言基礎(chǔ)、Spark的設(shè)計與運(yùn)行原理、Spark環(huán)境搭建和使用方法、RDD編程、Spark SQL、Spark Streaming、Spark MLlib等。
本書是廈門大學(xué)作者團(tuán)隊長期經(jīng)驗總結(jié)的結(jié)晶,是在廈門大學(xué)《大數(shù)據(jù)技術(shù)原理與應(yīng)用》入門級大數(shù)據(jù)教材的基礎(chǔ)之上編寫的。為了確保教程質(zhì)量,在編著出版紙質(zhì)教材之前,實(shí)驗室已經(jīng)于2016年10月通過實(shí)驗室官網(wǎng)免費(fèi)發(fā)布共享了簡化版的Spark在線教程和相關(guān)教學(xué)資源,同時,該在線教程也已經(jīng)用于廈門大學(xué)計算機(jī)科學(xué)系研究生的大數(shù)據(jù)課程教學(xué),并成為全國高校大數(shù)據(jù)課程教師培訓(xùn)交流班的授課內(nèi)容。實(shí)驗室根據(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ù)體系
林子雨
廈門大學(xué)計算機(jī)科學(xué)系教師。2013年度和2017年度廈門大學(xué)教學(xué)類獎教金獲得者。中國計算機(jī)學(xué)會數(shù)據(jù)庫專業(yè)委員會委員,中國計算機(jī)學(xué)會信息系統(tǒng)專業(yè)委員會委員,廈門大學(xué)數(shù)據(jù)庫實(shí)驗室負(fù)責(zé)人,數(shù)據(jù)中國“百校工程”教育部專家組成員。國內(nèi)高校“數(shù)字教師”的提出者和建設(shè)者,編著出版了國內(nèi)高校系統(tǒng)介紹大數(shù)據(jù)知識的專業(yè)教材《大數(shù)據(jù)技術(shù)原理與應(yīng)用》,成為國內(nèi)眾多高校開課教材,同時建設(shè)了國內(nèi)高校大數(shù)據(jù)課程公共服務(wù)平臺,為教師教學(xué)和學(xué)生學(xué)習(xí)大數(shù)據(jù)課程免費(fèi)提供全方位、一站式服務(wù),平臺每年訪問量超過100萬次,成為國內(nèi)高校大數(shù)據(jù)教學(xué)知名品 牌。
"
第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í)驗1 Linux系統(tǒng)的安裝和常用命令 15
一、實(shí)驗?zāi)康摹?5
二、實(shí)驗平臺 15
三、實(shí)驗內(nèi)容和要求 15
四、實(shí)驗報告 16
第2章 Scala語言基礎(chǔ) 17
2.1 Scala語言概述 18
2.1.1 計算機(jī)的緣起 18
2.1.2 編程范式 19
2.1.3 Scala簡介 20
2.1.4 Scala的安裝 21
2.1.5 HelloWorld 21
2.2 Scala基礎(chǔ)知識 23
2.2.1 基本數(shù)據(jù)類型和變量 23
2.2.2 輸入/輸出 26
2.2.3 控制結(jié)構(gòu) 28
2.2.4 數(shù)據(jù)結(jié)構(gòu) 31
2.3 面向?qū)ο缶幊袒A(chǔ) 37
2.3.1 類 37
2.3.2 對象 42
2.3.3 繼承 47
2.3.4 參數(shù)化類型 50
2.3.5 特質(zhì) 52
2.3.6 模式匹配 55
2.3.7 包 58
2.4 函數(shù)式編程基礎(chǔ) 59
2.4.1 函數(shù)的定義與使用 60
2.4.2 高階函數(shù) 61
2.4.3 閉包 62
2.4.4 偏應(yīng)用函數(shù)和Curry化 62
2.4.5 針對容器的操作 64
2.4.6 函數(shù)式編程實(shí)例 69
2.5 本章小結(jié) 70
2.6 習(xí)題 70
實(shí)驗2 Scala編程初級實(shí)踐 71
一、實(shí)驗?zāi)康摹?1
二、實(shí)驗平臺 71
三、實(shí)驗內(nèi)容和要求 72
四、實(shí)驗報告 75
第3章 Spark的設(shè)計與運(yùn)行原理 76
3.1 概述 77
3.2 Spark生態(tài)系統(tǒng) 78
3.3 Spark運(yùn)行架構(gòu) 79
3.3.1 基本概念 79
3.3.2 架構(gòu)設(shè)計 80
3.3.3 Spark運(yùn)行基本流程 81
3.3.4 RDD的設(shè)計與運(yùn)行原理 82
3.4 Spark的部署方式 91
3.5 本章小結(jié) 92
3.6 習(xí)題 93
第4章 Spark環(huán)境搭建和使用方法 94
4.1 安裝Spark 95
4.1.1 基礎(chǔ)環(huán)境 95
4.1.2 下載安裝文件 95
4.1.3 配置相關(guān)文件 96
4.1.4 Spark和Hadoop的交互 97
4.2 在spark-shell中運(yùn)行代碼 97
4.2.1 spark-shell命令 98
4.2.2 啟動spark-shell 99
4.3 開發(fā)Spark獨(dú)立應(yīng)用程序 99
4.3.1 安裝編譯打包工具 100
4.3.2 編寫Spark應(yīng)用程序代碼 101
4.3.3 編譯打包 101
4.3.4 通過spark-submit運(yùn)行程序 104
4.4 Spark集群環(huán)境搭建 104
4.4.1 集群概況 105
4.4.2 搭建Hadoop集群 105
4.4.3 在集群中安裝Spark 106
4.4.4 配置環(huán)境變量 106
4.4.5 Spark的配置 106
4.4.6 啟動Spark集群 107
4.4.7 關(guān)閉Spark集群 107
4.5 在集群上運(yùn)行Spark應(yīng)用程序 108
4.5.1 啟動Spark集群 108
4.5.2 采用獨(dú)立集群管理器 108
4.5.3 采用Hadoop YARN管理器 109
4.6 本章小結(jié) 110
4.7 習(xí)題 111
實(shí)驗3 Spark和Hadoop的安裝 111
一、實(shí)驗?zāi)康摹?11
二、實(shí)驗平臺 111
三、實(shí)驗內(nèi)容和要求 111
四、實(shí)驗報告 112
第5章 RDD編程 113
5.1 RDD編程基礎(chǔ) 114
5.1.1 RDD創(chuàng)建 114
5.1.2 RDD操作 115
5.1.3 持久化 121
5.1.4 分區(qū) 122
5.1.5 一個綜合實(shí)例 126
5.2 鍵值對RDD 128
5.2.1 鍵值對RDD的創(chuàng)建 128
5.2.2 常用的鍵值對轉(zhuǎn)換操作 129
5.2.3 一個綜合實(shí)例 133
5.3 數(shù)據(jù)讀寫 134
5.3.1 文件數(shù)據(jù)讀寫 135
5.3.2 讀寫HBase數(shù)據(jù) 137
5.4 綜合實(shí)例 141
5.4.1 求TOP值 141
5.4.2 文件排序 143
5.4.3 二次排序 144
5.5 本章小結(jié) 146
實(shí)驗4 RDD編程初級實(shí)踐 146
一、實(shí)驗?zāi)康摹?46
二、實(shí)驗平臺 146
三、實(shí)驗內(nèi)容和要求 146
四、實(shí)驗報告 148
第6章 Spark SQL 149
6.1 Spark SQL簡介 150
6.1.1 從Shark說起 150
6.1.2 Spark SQL架構(gòu) 151
6.1.3 為什么推出Spark SQL 152
6.2 DataFrame概述 152
6.3 DataFrame的創(chuàng)建 153
6.4 DataFrame的保存 154
6.5 DataFrame的常用操作 155
6.6 從RDD轉(zhuǎn)換得到DataFrame 156
6.6.1 利用反射機(jī)制推斷RDD模式 157
6.6.2 使用編程方式定義RDD模式 158
6.7 使用Spark SQL讀寫數(shù)據(jù)庫 160
6.7.1 通過JDBC連接數(shù)據(jù)庫 160
6.7.2 連接Hive讀寫數(shù)據(jù) 162
6.8 本章小結(jié) 166
6.9 習(xí)題 166
實(shí)驗5 Spark SQL編程初級實(shí)踐 167
一、實(shí)驗?zāi)康摹?67
二、實(shí)驗平臺 167
三、實(shí)驗內(nèi)容和要求 167
四、實(shí)驗報告 168
第7章 Spark Streaming 169
7.1 流計算概述 170
7.1.1 靜態(tài)數(shù)據(jù)和流數(shù)據(jù) 170
7.1.2 批量計算和實(shí)時計算 171
7.1.3 流計算概念 171
7.1.4 流計算框架 172
7.1.5 流計算處理流程 173
7.2 Spark Streaming 174
7.2.1 Spark Streaming設(shè)計 174
7.2.2 Spark Streaming與Storm的對比 175
7.2.3 從“Hadoop+Storm”架構(gòu)轉(zhuǎn)向Spark架構(gòu) 176
7.3 DStream操作概述 177
7.3.1 Spark Streaming工作機(jī)制 177
7.3.2 編寫Spark Streaming程序的基本步驟 178
7.3.3 創(chuàng)建StreamingContext對象 178
7.4 基本輸入源 179
7.4.1 文件流 179
7.4.2 套接字流 181
7.4.3 RDD隊列流 186
7.5 高級數(shù)據(jù)源 187
7.5.1 Kafka簡介 188
7.5.2 Kafka準(zhǔn)備工作 188
7.5.3 Spark準(zhǔn)備工作 189
7.5.4 編寫Spark Streaming程序使用Kafka數(shù)據(jù)源 190
7.6 轉(zhuǎn)換操作 194
7.6.1 DStream無狀態(tài)轉(zhuǎn)換操作 194
7.6.2 DStream有狀態(tài)轉(zhuǎn)換操作 195
7.7 輸出操作 199
7.7.1 把DStream輸出到文本文件中 199
7.7.2 把DStream寫入到關(guān)系數(shù)據(jù)庫中 200
7.8 本章小結(jié) 202
7.9 習(xí)題 202
實(shí)驗6 Spark Streaming編程初級實(shí)踐 203
一、實(shí)驗?zāi)康摹?03
二、實(shí)驗平臺 203
三、實(shí)驗內(nèi)容和要求 203
四、實(shí)驗報告 204
第8章 Spark MLlib 205
8.1 基于大數(shù)據(jù)的機(jī)器學(xué)習(xí) 206
8.2 機(jī)器學(xué)習(xí)庫MLlib概述 207
8.3 基本數(shù)據(jù)類型 208
8.3.1 本地向量 208
8.3.2 標(biāo)注點(diǎn) 208
8.3.3 本地矩陣 209
8.4 機(jī)器學(xué)習(xí)流水線 210
8.4.1 流水線的概念 210
8.4.2 流水線工作過程 211
8.5 特征提取、轉(zhuǎn)換和選擇 212
8.5.1 特征提取 213
8.5.2 特征轉(zhuǎn)換 215
8.5.3 特征選擇 220
8.5.4 局部敏感哈希 221
8.6 分類算法 222
8.6.1 邏輯斯蒂回歸分類器 222
8.6.2 決策樹分類器 226
8.7 聚類算法 229
8.7.1 K-Means聚類算法 230
8.7.2 GMM聚類算法 232
8.8 協(xié)同過濾算法 234
8.8.1 推薦算法的原理 235
8.8.2 ALS算法 235
8.9 模型選擇和超參數(shù)調(diào)整 239
8.9.1 模型選擇工具 239
8.9.2 用交叉驗證選擇模型 240
8.10 本章小結(jié) 242
8.11 習(xí)題 242
實(shí)驗7 Spark機(jī)器學(xué)習(xí)庫MLlib編程實(shí)踐 243
一、實(shí)驗?zāi)康摹?43
二、實(shí)驗平臺 243
三、實(shí)驗內(nèi)容和要求 243
四、實(shí)驗報告 244
參考文獻(xiàn) 245