Spark大數(shù)據(jù)編程實(shí)用教程
定 價(jià):109 元
- 作者:艾叔
- 出版時(shí)間:2020/5/1
- ISBN:9787111651000
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類(lèi):TP274
- 頁(yè)碼:384
- 紙張:
- 版次:
- 開(kāi)本:16開(kāi)
本書(shū)是一本講解Spark基礎(chǔ)應(yīng)用及編程的實(shí)用教程,基于 Spark 2.3 版本,內(nèi)容包括 Spark 與大數(shù)據(jù)、構(gòu)建 Spark 運(yùn)行環(huán)境、開(kāi)發(fā)一個(gè)Spark 程序、深入理解 Spark 程序代碼、RDD 編程、Spark SQL 結(jié)構(gòu)化數(shù)據(jù)處理、Spark Streaming、Structured Streaming、SparkR和GraphX。本書(shū)總結(jié)了Spark 學(xué)習(xí)的關(guān)鍵點(diǎn);提出了 Spark 快速學(xué)習(xí)路線圖;提供配套的 Spark前置課程學(xué)習(xí)資源鏈接,包括虛擬機(jī)、Linux 和 Shell 免費(fèi)高清視頻、《零基礎(chǔ)快速入門(mén)Scala》免費(fèi)電子書(shū)等,幫助零基礎(chǔ)讀者迅速夯實(shí)Spark基礎(chǔ)。
本書(shū)配以大量的示例、源代碼和注釋?zhuān)梢詭椭x者快速、全面而又深入地掌握Spark編程技能。
本書(shū)既可作為高等院校大數(shù)據(jù)、云計(jì)算和人工智能相關(guān)專(zhuān)業(yè)的教材,也可以作為Spark學(xué)習(xí)者和大數(shù)據(jù)研發(fā)人員的技術(shù)參考書(shū)。
目 錄
前言
第1章 Spark與大數(shù)據(jù)1
1.1 大數(shù)據(jù)開(kāi)發(fā)基礎(chǔ)1
1.1.1 什么是大數(shù)據(jù)1
1.1.2 大數(shù)據(jù)開(kāi)發(fā)的通用步驟2
1.1.3 大數(shù)據(jù)開(kāi)發(fā)技術(shù)4
1.2 初識(shí)Spark10
1.2.1 Spark是什么10
1.2.2 Spark的技術(shù)特點(diǎn)11
1.3 Spark技術(shù)棧12
1.4 Spark重要組件13
1.4.1 Spark Core13
1.4.2 Spark SQL14
1.4.3 GraphX15
1.4.4 流數(shù)據(jù)處理16
1.4.5 SparkR17
1.4.6 MLlib/ML18
1.4.7 Spark交互工具18
1.5 Spark和Scala19
1.5.1 Scala語(yǔ)言簡(jiǎn)介19
1.5.2 為什么用Scala開(kāi)發(fā)Spark框架20
1.5.3 為什么用Scala開(kāi)發(fā)Spark程序20
1.5.4 Scala開(kāi)發(fā)Spark程序所涉及的
技術(shù)20
1.5.5 Scala語(yǔ)言基礎(chǔ)21
1.6 如何快速掌握Spark21
1.6.1 Spark學(xué)習(xí)的痛點(diǎn)21
1.6.2 Spark快速學(xué)習(xí)路線圖22
1.6.3 Spark學(xué)習(xí)中的關(guān)鍵點(diǎn)23
1.6.4 利用本書(shū)相關(guān)資源高效學(xué)習(xí)Spark23
1.6.5 本書(shū)所使用的軟件和版本25
1.7 練習(xí)25
第2章 構(gòu)建Spark運(yùn)行環(huán)境26
2.1 Spark程序運(yùn)行時(shí)架構(gòu)26
2.2 構(gòu)建Spark大數(shù)據(jù)運(yùn)行環(huán)境28
2.2.1 構(gòu)建HDFS28
2.2.2 構(gòu)建Yarn30
2.2.3 構(gòu)建Spark集群31
2.3 運(yùn)行Spark程序(Local方式)31
2.4 運(yùn)行Spark程序(分布式方式)32
2.4.1 Spark on Yarn32
2.4.2 Spark on Standalone36
2.5 Spark程序在spark-shell上運(yùn)行41
2.6 使用Web UI監(jiān)控Spark程序
運(yùn)行43
2.7 擴(kuò)展集群節(jié)點(diǎn)48
2.8 練習(xí)49
第3章 開(kāi)發(fā)一個(gè)Spark程序51
3.1 在命令行模式下開(kāi)發(fā)Spark程序51
3.1.1 構(gòu)建Scala程序編譯環(huán)境51
3.1.2 使用Vim編寫(xiě)Spark程序53
3.1.3 使用命令編譯、打包Spark程序54
3.1.4 運(yùn)行Spark程序56
3.1.5 使用java命令運(yùn)行Spark程序57
3.1.6 Spark程序編譯、運(yùn)行、部署的
關(guān)鍵點(diǎn)58
3.2 使用IDEA開(kāi)發(fā)Spark程序58
3.2.1 IDEA安裝和基本使用59
3.2.2 使用IDEA編輯Spark代碼60
3.2.3 IDEA編譯、打包62
3.2.4 IDEA遠(yuǎn)程提交Spark程序63
3.3 練習(xí)64
第4章 深入理解Spark程序代碼66
4.1 Spark程序代碼結(jié)構(gòu)66
4.2 Spark程序代碼的核心概念68
4.2.1 RDD68
4.2.2 Application68
4.2.3 Job69
4.2.4 DAG70
4.2.5 Stage72
4.2.6 Task76
4.2.7 Application、Job、Stage和Task的
并行粒度和并行條件77
4.3 Spark程序代碼執(zhí)行過(guò)程77
4.4 練習(xí)85
第5章 RDD編程86
5.1 RDD核心概念86
5.1.1 Transformation的基本概念87
5.1.2 Action的基本概念88
5.1.3 Partition的基本概念88
5.2 創(chuàng)建RDD89
5.2.1 使用parallelize/makeRDD
創(chuàng)建RDD89
5.2.2 使用textFile創(chuàng)建RDD91
5.2.3 其他RDD創(chuàng)建操作92
5.3 RDD Partition93
5.3.1 Partition的基本操作94
5.3.2 Partition的分區(qū)過(guò)程96
5.3.3 Partition和Task98
5.3.4 計(jì)算Partition的個(gè)數(shù)100
5.3.5 Partition的綜合應(yīng)用103
5.4 Transformation操作107
5.4.1 map操作107
5.4.2 flatMap操作111
5.4.3 mapPartitions操作113
5.4.4 join操作115
5.4.5 union操作120
5.4.6 intersection操作121
5.4.7 groupBy操作123
5.4.8 groupByKey操作124
5.4.9 reduceByKey操作125
5.4.10 aggregateByKey操作127
5.4.11 cogroup操作129
5.5 Action操作130
5.5.1 collect操作130
5.5.2 reduce操作130
5.5.3 fold操作131
5.5.4 aggregate操作133
5.5.5 foreachPartition操作134
5.5.6 saveAsTextFile操作135
5.5.7 saveAsObjectFile操作135
5.6 RDD的cache/persist和
checkpoint操作136
5.6.1 cache/persist和checkpoint概述136
5.6.2 cache/persist使用注意事項(xiàng)137
5.6.3 cache/persist操作138
5.6.4 checkpoint操作139
5.7 練習(xí)140
第6章 Spark SQL結(jié)構(gòu)化數(shù)據(jù)處理142
6.1 Spark SQL的核心概念142
6.1.1 結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)142
6.1.2 DataFrame143
6.1.3 Dataset144
6.1.4 Persistent Table和Data
Warehouse145
6.1.5 SQL146
6.1.6 SparkSession147
6.2 Spark SQL數(shù)據(jù)處理概述147
6.2.1 Spark SQL數(shù)據(jù)處理環(huán)境147
6.2.2 Spark SQL處理結(jié)構(gòu)化數(shù)據(jù)149
6.2.3 Spark SQL處理不同數(shù)據(jù)源的
數(shù)據(jù)150
6.3 構(gòu)建Spark SQL運(yùn)行環(huán)境150
6.3.1 Spark SQL運(yùn)行環(huán)境概述150
6.3.2 構(gòu)建最簡(jiǎn)的Spark SQL運(yùn)行環(huán)境151
6.3.3 構(gòu)建兼容Hive的Spark SQL運(yùn)行
環(huán)境153
6.4 DataFrame/Dataset快速上手157
6.4.1 DataFrame/Dataset使用概述157
6.4.2 在spark-shell中使用DataFrame/
Dataset157
6.4.3 在代碼中使用DataFrame/Dataset161
6.4.4 DataFrame/Dataset使用上的區(qū)別163
6.4.5 DataFrame行解析方法164
6.4.6 DataFrame和Dataset轉(zhuǎn)換164
6.5 DataFrame/Dataset與數(shù)據(jù)源的
轉(zhuǎn)換165
6.5.1 DataFrame/Dataset與數(shù)據(jù)源的轉(zhuǎn)換
關(guān)系和方法概述165
6.5.2 DataFrame/Dataset與Seq的轉(zhuǎn)換167
6.5.3 DataFrame/Dataset與RDD的
轉(zhuǎn)換169
6.5.4 DataFrame/Dataset文件與Sequence
文件的轉(zhuǎn)換170
6.5.5 DataFrame/Dataset與CSV文件的
轉(zhuǎn)換170
6.5.6 DataFrame/Dataset與JSON文件的
轉(zhuǎn)換176
6.5.7 DataFrame/Dataset與ORC文件的
轉(zhuǎn)換178
6.5.8 DataFrame/Dataset與Parquet文件
的轉(zhuǎn)換179
6.5.9 DataFrame/Dataset與Avro文件的
轉(zhuǎn)換182
6.5.10 DataFrame/Dataset與MySQL
數(shù)據(jù)庫(kù)的轉(zhuǎn)換183
6.5.11 DataFrame/Dataset與Hive表的
轉(zhuǎn)換188
6.5.12 DataFrame/Dataset與Built-in data
source表的轉(zhuǎn)換193
6.6 DataFrame/Dataset常用API198
6.6.1 Action198
6.6.2 Basic Dataset function200
6.6.3 Typed Transformation205
6.6.4 Untyped Transformation213
6.7 SQL操作223
6.7.1 常用DDL使用說(shuō)明及示例224
6.7.2 DQL使用說(shuō)明及示例226
6.7.3 常用DML使用說(shuō)明及示例232
6.8 練習(xí)234
第7章 Spark Streaming236
7.1 Spark Streaming基礎(chǔ)236
7.1.1 流數(shù)據(jù)定義及其特點(diǎn)236
7.1.2 Spark Streaming的工作流程237
7.1.3 Spark Streaming的核心概念238
7.2 編寫(xiě)一個(gè)Spark Streaming程序241
7.3 Spark Streaming Web UI的使用244
7.3.1 Spark Streaming Web UI使用前
準(zhǔn)備244
7.3.2 Spark Streaming Web UI參數(shù)
說(shuō)明247
7.4 多路流數(shù)據(jù)合并處理示例250
7.4.1 示例實(shí)現(xiàn)說(shuō)明250
7.4.2 示例分析:多數(shù)據(jù)流中Batch Job
的執(zhí)行254
7.5 DStream Transformation操作255
7.5.1 DStream Transformation實(shí)現(xiàn)
原理256
7.5.2 DStream常見(jiàn)的Transformation
操作及說(shuō)明258
7.5.3 Spark Streaming的窗口(Window)
操作及示例259
7.6 DStream Output 操作262
7.7 練習(xí)264
第8章 Structured Streaming265
8.1 Structured Streaming基礎(chǔ)265
8.1.1 Structured Streaming處理流程265
8.1.2 Structured Streaming基本概念266
8.1.3 Structured Streaming技術(shù)特性268
8.2 Structured Streaming接入Text File
數(shù)據(jù)源268
8.3 Structured Streaming接入Rate
數(shù)據(jù)源273
8.4 使用Schema解析JSON格式
數(shù)據(jù)源274
8.5 使用DataFrame/Dataset處理
流數(shù)據(jù)277
8.6 Structured Streaming Window
操作282
8.7 Structured Streaming Watermarking
操作288
8.8 Structured Streaming JOIN操作290
8.8.1 Streaming數(shù)據(jù)與Static數(shù)據(jù)的
JOIN操作示例291
8.8.2 Streaming數(shù)據(jù)與Streaming數(shù)據(jù)
的JOIN操作示例295
8.9 練習(xí)304
第9章 SparkR305
9.1 SparkR基礎(chǔ)305
9.1.1 為什么需要SparkR305
9.1.2 什么是SparkR306
9.1.3 SparkR和R的關(guān)系306
9.1.4 SparkR的技術(shù)特征306
9.1.5 SparkR程序運(yùn)行時(shí)架構(gòu)306
9.2 構(gòu)建SparkR程序開(kāi)發(fā)和運(yùn)行
環(huán)境307
9.3 SparkR代碼的執(zhí)行方式308
9.3.1 在RStudio-server上執(zhí)行SparkR
代碼309
9.3.2 在R Shell上執(zhí)行SparkR代碼311
9.3.3 使用spark-submit執(zhí)行SparkR
代碼312
9.3.4 在sparkR上執(zhí)行SparkR代碼313
9.4 SparkR的基本使用314
9.4.1 SparkR編程的基本流程315
9.4.2 創(chuàng)建SparkDataFrame315
9.4.3 SparkDataFrame的基本操作318
9.4.4 在Spark上分布式執(zhí)行R函數(shù)319
9.4.5 SQL查詢(xún)323
9.5 SparkR機(jī)器學(xué)習(xí)算子323
9.5.1 SparkR常用的機(jī)器學(xué)習(xí)算子323
9.5.2 SparkR機(jī)器學(xué)習(xí)算子的使用324
9.6 利用SparkR實(shí)現(xiàn)單詞統(tǒng)計(jì)和
圖形輸出326
9.7 練習(xí)329
第10章 GraphX330
10.1 GraphX基礎(chǔ)330
10.1.1 圖的定義和傳統(tǒng)表示方法330
10.1.2 圖計(jì)算332
10.1.3 有向多重圖332
10.1.4 GraphX特性333
10.1.5 GraphX框架334
10.2 GraphX的基本數(shù)據(jù)結(jié)構(gòu)335
10.2.1 VertexRDD335
10.2.2 EdgeRDD338
10.2.3 Graph340
10.3 GraphX實(shí)現(xiàn)最短路徑算法——
SGDSP354
10.4 GraphX Pregel的原理及使用361
10.4.1 GraphX Pregel接口說(shuō)明361
10.4.2 GraphX Pregel的處理流程362
10.4.3 GraphX Pregel的使用363
10.5 GraphX Pregel實(shí)現(xiàn)最短路徑
算法——SGPSP366
10.6 練習(xí)370
參考文獻(xiàn)372