注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網(wǎng)絡數(shù)據(jù)庫數(shù)據(jù)庫挖掘/數(shù)據(jù)倉庫循序漸進Spark大數(shù)據(jù)應用開發(fā)

循序漸進Spark大數(shù)據(jù)應用開發(fā)

循序漸進Spark大數(shù)據(jù)應用開發(fā)

定 價:¥89.00

作 者: 柳偉衛(wèi)
出版社: 清華大學出版社
叢編項:
標 簽: 暫缺

購買這本書可以去


ISBN: 9787302675204 出版時間: 2024-11-01 包裝: 平裝-膠訂
開本: 16開 頁數(shù): 字數(shù):  

內(nèi)容簡介

  《循序漸進Spark大數(shù)據(jù)應用開發(fā)》結(jié)合作者一線開發(fā)實踐,循序漸進地介紹了新版Apache Spark 3.x的開發(fā)技術。全書共10章,第1章和第2章主要介紹Spark的基本概念、安裝,并演示如何編寫最簡單的Spark程序。第3章深入探討了Spark的核心組件RDD。第4章講解了Spark集群管理,幫助讀者理解任務提交與執(zhí)行的基本原理。第5章介紹了Spark SQL,這是處理結(jié)構(gòu)化數(shù)據(jù)的基礎工具。第6章展示了Spark Web UI,通過界面化的方式了解Spark集群運行狀況。第7章和第8章分別介紹了Spark流式數(shù)據(jù)處理框架Spark Streaming和Structured Streaming。第9章和第10章則分別介紹了業(yè)界流行的機器學習和圖計算處理框架MLlib和GraphX。書中各章節(jié)還提供了豐富的實戰(zhàn)案例和上機練習題,以便讀者在學習的同時進行實際操作,迅速提升動手能力?!堆驖u進Spark大數(shù)據(jù)應用開發(fā)》技術先進,案例豐富,適合對Spark大數(shù)據(jù)應用感興趣的學生、大數(shù)據(jù)開發(fā)人員及架構(gòu)師使用,也可作為培訓機構(gòu)和高校大數(shù)據(jù)課程的教學用書。

作者簡介

  柳偉衛(wèi),網(wǎng)名老衛(wèi)、waylau,在IT公司擔任過項目經(jīng)理、架構(gòu)師、高級技術顧問等職位,擁有十余年開發(fā)經(jīng)驗,具有豐富的軟件開發(fā)管理及系統(tǒng)架構(gòu)經(jīng)驗。主導過多個省、國家級大型分布式系統(tǒng)的設計與研發(fā),參與過面向全球的供應鏈系統(tǒng)服務化改造。在實際工作中,積累了大量的分布式系統(tǒng)、微 服務架構(gòu)以及性能調(diào)優(yōu)經(jīng)驗。業(yè)余時間創(chuàng)建了 waylau.com 網(wǎng)站,用于分享個人技術心得。喜歡開源,長期躍于各大開源社區(qū),編著了《跟老衛(wèi)學HarmonyOS開發(fā)》《Netty 實戰(zhàn)(精髓)》等近30余本開源技術教程(見 https://waylau.com/books/),廣受網(wǎng)友好評,是 CSDN、 開源中國、阿里云開發(fā)者、華為開發(fā)者等技術社區(qū)專家,慕課網(wǎng)、華為開發(fā)者聯(lián)盟社區(qū)認證講師。已出版包括《HarmonyOS應用開發(fā)入門》《分布式系統(tǒng)常用技術及案例分析》《Java核心編程》《輕量級Java EE企業(yè)應用開發(fā)實戰(zhàn)》《Node.js Express MongoDB Vue.js全棧開發(fā)實戰(zhàn)》《Netty原理解析與開發(fā)實戰(zhàn)》等在內(nèi)的幾十本專著。

圖書目錄

第 1 章  Spark概述 1
1.1  Spark簡介 1
1.1.1  誕生與初始階段 1
1.1.2  開源與社區(qū)建設 2
1.1.3  成為頂級項目 2
1.1.4  版本更新 3
1.2  Spark組成 4
1.2.1  Spark Core 5
1.2.2  集群管理器 5
1.2.3  Spark UI 5
1.2.4  Spark SQL 6
1.2.5  Spark Streaming 6
1.2.6  Structured Streaming 6
1.2.7  MLlib 6
1.2.8  GraphX 7
1.2.9  其他 7
1.3  Spark數(shù)據(jù)類型 7
1.3.1  RDD 7
1.3.2  DataFrame 8
1.3.3  Dataset 8
1.3.4  數(shù)值類型 8
1.3.5  字符串類型 8
1.3.6  日期和時間類型 9
1.3.7  復雜類型 9
1.4  Spark的使用場景 9
1.4.1  批處理 9
1.4.2  實時流處理 9
1.4.3  分布式文件系統(tǒng) 10
1.4.4  機器學習 10
1.4.5  圖計算 10
1.5  Spark與Hadoop的聯(lián)系與區(qū)別 11
1.5.1  Hadoop概述 11
1.5.2  Spark的優(yōu)缺點 11
1.5.3  Spark與Hadoop的關系 12
1.6  本章小結(jié) 12
第 2 章  Spark安裝及初體驗 13
2.1  下載并安裝Spark 13
2.1.1  普通安裝 13
2.1.2  通過Docker鏡像安裝 15
2.1.3  驗證安裝 17
2.2  通過Shell使用Spark 18
2.2.1  使用Scala的Shell 18
2.2.2  使用其他語言的Shell 19
2.3  實戰(zhàn):通過Spark進行詞頻統(tǒng)計 19
2.3.1  初始化應用 19
2.3.2  創(chuàng)建Spark應用程序 20
2.3.3  準備數(shù)據(jù)文件 22
2.3.4  運行程序 22
2.4  日志信息詳解 23
2.4.1  啟動信息 23
2.4.2  資源分配、Spark上下文初始化 25
2.4.3  任務進度和狀態(tài) 26
2.4.4  應用程序日志 29
2.4.5  完成信息 29
2.5  動手練習 31
練習1:安裝和配置Spark 31
練習2:使用Spark讀取CSV文件并顯示前5行 32
練習3:使用Spark創(chuàng)建不同類型的數(shù)據(jù)結(jié)構(gòu) 33
練習4:通過Spark進行詞頻統(tǒng)計 34
2.6  本章小結(jié) 36
第 3 章  RDD基礎編程 37
3.1  了解RDD的基本概念 37
3.1.1  RDD的定義 37
3.1.2  RDD的特性 38
3.1.3  RDD的操作 38
3.1.4  RDD的依賴關系 38
3.1.5  RDD的容錯機制 39
3.1.6  RDD的持久化 40
3.2  創(chuàng)建RDD 40
3.2.1  并行化集合 40
3.2.2  讀取外部數(shù)據(jù)集 40
3.3  操作RDD 41
3.4  實戰(zhàn):transformation操作 42
3.4.1  map 42
3.4.2  filter 44
3.4.3  flatMap 44
3.4.4  sample 45
3.4.5  union 46
3.4.6  distinct 46
3.4.7  groupByKey 47
3.5  實戰(zhàn):action操作 48
3.5.1  collect 48
3.5.2  reduce 49
3.5.3  count 49
3.5.4  first 50
3.5.5  take 50
3.5.6  foreach 51
3.5.7  saveAsTextFile 51
3.6  惰性求值 52
3.7  函數(shù)式編程 53
3.8  持久化 53
3.8.1  RDD持久化的基本概念 53
3.8.2  RDD持久化的方法 54
3.8.3  RDD持久化的存儲級別 54
3.8.4  RDD持久化的使用場景 54
3.8.5  RDD持久化的注意事項 54
3.8.6  刪除數(shù)據(jù) 55
3.9  實戰(zhàn):持久化 55
3.10  共享變量 57
3.10.1  廣播變量 57
3.10.2  累加器 58
3.11  混洗 60
3.11.1  定義與原理 60
3.11.2  混洗流程 61
3.11.3  混洗優(yōu)化方法 62
3.12  鍵-值對 62
3.13  動手練習 63
練習1:創(chuàng)建一個RDD并打印其元素(并行化集合) 63
練習2:讀取外部數(shù)據(jù)集并統(tǒng)計單詞數(shù)量(讀取外部數(shù)據(jù)集) 64
3.14  本章小結(jié) 65
第 4 章  Spark集群管理 66
4.1  Spark集群概述 66
4.1.1  Spark集群組件 66
4.1.2  使用Spark集群的注意事項 67
4.1.3  集群管理器類型 68
4.2  提交任務到Spark集群 68
4.2.1  捆綁應用程序的依賴關系 68
4.2.2  使用spark-submit啟動應用 69
4.2.3  主節(jié)點URL 70
4.2.4  從文件加載配置 71
4.3  啟動Spark集群 71
4.3.1  手動啟動集群 72
4.3.2  集群啟動腳本 72
4.4  Spark集群的高可用方案 73
4.4.1  使用ZooKeeper的備用模式 73
4.4.2  使用本地文件系統(tǒng)的單節(jié)點恢復 74
4.5  使用YARN集群 74
4.5.1  在YARN集群管理器上啟動Spark 74
4.5.2  添加其他的JAR 75
4.5.3  調(diào)試應用 75
4.5.4  使用Spark歷史記錄服務器替換Spark Web UI 76
4.6  YARN集群的常用配置 77
4.7  YARN集群資源分配和配置 80
4.8  YARN階段級調(diào)度 81
4.8.1  階段級調(diào)度概述 81
4.8.2  注意事項 82
4.9  動手練習 82
練習1:提交任務到Spark集群 82
練習2:啟動Spark集群 83
練習3:使用YARN集群 84
練習4:使用Spark進行數(shù)據(jù)清洗和轉(zhuǎn)換 84
4.10  本章小結(jié) 86
第 5 章  Spark SQL 87
5.1  Spark SQL的基本概念及工作原理 87
5.1.1  Spark SQL的基本概念 87
5.1.2  Spark SQL的工作原理 88
5.1.3  Spark RDD與Spark SQL的比較 89
5.1.4  抉擇建議 90
5.2  Dataset與DataFrame 90
5.2.1  SQL API與Dataset/DataFrame API 90
5.2.2  RDD、Dataset和DataFrame的優(yōu)缺點總結(jié) 92
5.2.3  RDD、Dataset、DataFrame的相互轉(zhuǎn)換 93
5.3  實戰(zhàn):DataFrame的基本操作 94
5.3.1  創(chuàng)建SparkSession 94
5.3.2  創(chuàng)建DataFrame 95
5.3.3  DataFrame的常用操作 97
5.4  實戰(zhàn):Dataset的基本操作 99
5.4.1  創(chuàng)建SparkSession 99
5.4.2  創(chuàng)建Dataset 100
5.4.3  Dataset的常用操作 101
5.5  實戰(zhàn):使用DataFrame創(chuàng)建臨時視圖 103
5.5.1  如何創(chuàng)建本地臨時視圖 104
5.5.2  createTempView與createOrReplaceTempView的異同 105
5.5.3  全局臨時視圖 105
5.6  實戰(zhàn):RDD轉(zhuǎn)換為Dataset 106
5.6.1  使用反射推斷Schema 106
5.6.2  以編程方式構(gòu)建Schema 107
5.7  Apache Parquet列存儲格式 108
5.7.1  什么是列存儲格式 108
5.7.2  Parquet文件格式 110
5.8  實戰(zhàn):Apache Parquet數(shù)據(jù)源的讀取和寫入 111
5.8.1  讀取Parquet文件 111
5.8.2  寫入Parquet文件 112
5.8.3  手動指定選項 113
5.9  實戰(zhàn):使用JDBC操作數(shù)據(jù)庫 115
5.9.1  引入JDBC驅(qū)動程序 115
5.9.2  初始化表結(jié)構(gòu)和數(shù)據(jù) 115
5.9.3  讀取表數(shù)據(jù) 117
5.9.4  設置查詢條件 118
5.9.5  將數(shù)據(jù)寫入表 119
5.10  實戰(zhàn):讀取二進制文件 120
5.10.1  讀取二進制文件 120
5.10.2  運行應用 121
5.11  實戰(zhàn):導出數(shù)據(jù)到CSV文件 122
5.11.1  創(chuàng)建Dataset 122
5.11.2  將Dataset導出到CSV文件 123
5.11.3  運行 124
5.12  Apache ORC文件 124
5.12.1  ORC文件概述 124
5.12.2  ORC支持的數(shù)據(jù)類型 125
5.12.3  ORC實現(xiàn) 126
5.12.4  矢量化讀取器 127
5.12.5  模式合并 127
5.12.6  使用Zstandard壓縮 127
5.12.7  使用Bloom過濾器 127
5.12.8  列式加密 128
5.12.9  Hive元存儲ORC表轉(zhuǎn)換 128
5.12.10  ORC的常用配置 128
5.13  實戰(zhàn):Apache ORC文件操作示例 129
5.13.1  寫入ORC文件 129
5.13.2  讀取ORC文件 130
5.14  Apache Hive數(shù)據(jù)倉庫 130
5.14.1  Hive的特性 131
5.14.2  Hive數(shù)據(jù)組織 131
5.14.3  Hive的數(shù)據(jù)類型 132
5.14.4  創(chuàng)建、顯示、更改和刪除表 133
5.14.5  加載數(shù)據(jù) 136
5.14.6  查詢 137
5.15  實戰(zhàn):Apache Hive操作示例 139
5.15.1  Spark集成Hive 139
5.15.2  創(chuàng)建SparkSession 140
5.15.3  建表 141
5.15.4  加載數(shù)據(jù) 141
5.15.5  查詢 141
5.15.6  運行 141
5.16  Apache Avro格式 142
5.16.1  Avro概述 142
5.16.2  Avro的架構(gòu)與實現(xiàn) 143
5.16.3  Avro類型轉(zhuǎn)換Spark SQL類型 143
5.16.4  Spark SQL類型轉(zhuǎn)換Avro類型 144
5.17  實戰(zhàn):Apache Avro操作示例 145
5.17.1  Spark集成Avro 145
5.17.2  創(chuàng)建SparkSession 147
5.17.3  讀取Avro文件 147
5.17.4  寫入Avro文件 147
5.18  動手練習 148
練習1:使用DataFrame創(chuàng)建臨時視圖 148
練習2:對Apache Parquet數(shù)據(jù)源進行數(shù)據(jù)的讀取和寫入 149
練習3:使用DataFrame操作數(shù)據(jù)庫 149
練習4:導出數(shù)據(jù)到CSV文件 150
5.19  本章小結(jié) 150
第 6 章  Spark Web UI 152
6.1  Web UI概述 152
6.1.1  Web UI的組成 152
6.1.2  Web UI的功能 153
6.1.3  Web UI的使用 153
6.1.4  Web UI的優(yōu)化 153
6.2  啟動Web UI 154
6.2.1  Standalone模式 154
6.2.2  YARN模式 154
6.2.3  Kubernetes模式 154
6.2.4  其他集群管理器 155
6.3  Jobs頁面 155
6.4  Stages頁面 156
6.5  Storage頁面 157
6.6  Environment頁面 158
6.7  Executors頁面 160
6.8  SQL頁面 161
6.9  動手練習 162
練習1:啟動Web UI并訪問 162
練習2:使用Web UI了解集群運行狀態(tài) 163
6.10  本章小結(jié) 164
第 7 章  Spark Streaming 165
7.1  Spark Streaming概述 165
7.1.1  數(shù)據(jù)集類型 165
7.1.2  統(tǒng)一數(shù)據(jù)處理 166
7.1.3  Spark Streaming的基本概念 167
7.1.4  Spark Streaming的工作原理 167
7.1.5  Spark Streaming的應用場景 168
7.1.6  Spark Streaming的優(yōu)勢與挑戰(zhàn) 168
7.1.7  使用Spark Streaming的依賴 168
7.2  DStream的transformation操作 169
7.2.1  DStream的常用操作 170
7.2.2  DStream的窗口操作 170
7.3  DStream的輸入 171
7.3.1  輸入源的使用要點 172
7.3.2  基本輸入源 172
7.3.3  高級輸入源 173
7.3.4  Receiver的可靠性 173
7.3.5  自定義Receiver 173
7.3.6  自定義可靠的Receiver 175
7.4  實戰(zhàn):DStream無狀態(tài)的transformation操作 176
7.4.1  創(chuàng)建JavaStreamingContext對象 176
7.4.2  創(chuàng)建DStream 176
7.4.3  啟動計算 177
7.4.4  單詞發(fā)送服務器 177
7.4.5  運行 179
7.5  實戰(zhàn):DStream有狀態(tài)的transformation操作 179
7.5.1  滑動窗口 179
7.5.2  編寫滑動窗口示例 181
7.5.3  運行 181
7.6  DStream的輸出操作 181
7.6.1  常用的輸出操作 182
7.6.2  foreachRDD設計模式 182
7.7  實戰(zhàn):DStream的輸出操作 183
7.7.1  將DStream輸出到文件 184
7.7.2  運行 184
7.8  Spark Streaming使用DataFrame和SQL操作 185
7.9  Spark Streaming檢查點 186
7.9.1  Spark Streaming檢查點概念及原理 186
7.9.2  應用場景 187
7.9.3  配置方法 187
7.9.4  優(yōu)化策略 188
7.9.5  總結(jié)與展望 188
7.10  Spark Streaming性能優(yōu)化 188
7.10.1  數(shù)據(jù)接收并行度調(diào)優(yōu) 188
7.10.2  批處理時間優(yōu)化 189
7.10.3  內(nèi)存管理優(yōu)化 189
7.10.4  容錯性優(yōu)化 189
7.10.5  其他優(yōu)化策略 190
7.11  Spark Streaming容錯機制 190
7.11.1  Spark Streaming容錯機制概述 190
7.11.2  基于文件的數(shù)據(jù)源容錯機制 190
7.11.3  基于Receiver的數(shù)據(jù)源容錯機制 191
7.11.4  驅(qū)動程序節(jié)點的容錯機制 191
7.12  實戰(zhàn):Spark Streaming與Kafka集成 192
7.12.1  Spark Streaming集成Kafka 192
7.12.2  自定義生產(chǎn)者 192
7.12.3  構(gòu)造消費者 193
7.12.4  啟動Kafka服務器 195
7.12.5  運行 196
7.13  動手練習 198
練習1:DStream無狀態(tài)的transformation操作 198
練習2:DStream有狀態(tài)的transformation操作(滑動窗口) 199
練習3:編寫一個Spark Streaming應用程序 201
7.14  本章小結(jié) 203
第 8 章  Structured Streaming 204
8.1  Structured Streaming概述 204
8.1.1  基本概念 204
8.1.2  處理事件時間和延遲數(shù)據(jù) 206
8.1.3  容錯語義 207
8.1.4  Spark Streaming與Structured Streaming的比較 207
8.2  創(chuàng)建流式DataFrame/Dataset 208
8.2.1  從輸入源創(chuàng)建DataFrame/Dataset 208
8.2.2  流式DataFrame/Dataset的模式推理與分區(qū) 209
8.3  Structured Streaming操作 210
8.3.1  基本操作 210
8.3.2  窗口操作 211
8.3.3  連接操作 211
8.3.4  不支持的DataFrame/Dataset操作 213
8.4  Structured Streaming統(tǒng)計來自Socket數(shù)據(jù)流的詞頻 214
8.4.1  創(chuàng)建SparkSession 214
8.4.2  創(chuàng)建DataFrame 214
8.4.3  執(zhí)行查詢 215
8.4.4  運行 215
8.5  實戰(zhàn):Structured Streaming窗口操作 216
8.5.1  在事件時間上執(zhí)行窗口操作 216
8.5.2  創(chuàng)建SparkSession 217
8.5.3  創(chuàng)建DataFrame 217
8.5.4  執(zhí)行查詢 218
8.5.5  運行 219
8.6  Structured Streaming輸出接收器 220
8.6.1  文件接收器 220
8.6.2  Kafka接收器 220
8.6.3  Foreach接收器 220
8.6.4  Console接收器 220
8.6.5  內(nèi)存接收器 221
8.7  消除重復數(shù)據(jù) 221
8.7.1  使用唯一身份標識符 221
8.7.2  結(jié)合使用水印 221
8.8  狀態(tài)存儲 222
8.8.1  狀態(tài)存儲與恢復 222
8.8.2  狀態(tài)分片與讀寫 223
8.8.3  版本管理 223
8.8.4  狀態(tài)存儲的實現(xiàn) 223
8.9  啟動流式查詢 225
8.9.1  流式查詢的參數(shù) 225
8.9.2  foreach和foreachBatch 226
8.9.3  流式表API 228
8.9.4  觸發(fā)器 228
8.9.5  管理流式查詢 230
8.10  異步進度跟蹤 231
8.10.1  異步進度跟蹤的概念與重要性 231
8.10.2  異步進度跟蹤的實現(xiàn)機制 232
8.10.3  使用示例 232
8.10.4  使用限制 233
8.11  連續(xù)處理 233
8.11.1  啟用連續(xù)處理 233
8.11.2  連續(xù)處理與微批處理的比較 234
8.12  實戰(zhàn):Structured Streaming與Kafka集成 235
8.12.1  Structured Streaming集成Kafka 235
8.12.2  構(gòu)造消費者 236
8.12.3  運行 237
8.13  動手練習 239
練習1:使用Structured Streaming統(tǒng)計來自Socket數(shù)據(jù)流的詞頻 239
練習2:使用Structured Streaming進行窗口操作 240
練習3:使用Structured Streaming與Kafka集成 241
8.14  本章小結(jié) 243
第 9 章  MLlib 244
9.1  MLlib概述 244
9.1.1  功能簡介 244
9.1.2  重要算法 245
9.1.3  應用狀況 245
9.2  機器學習基礎知識 246
9.2.1  機器學習的定義 246
9.2.2  機器學習的分類 246
9.2.3  機器學習的基本流程 247
9.2.4  常見的機器學習算法 247
9.3  MLlib的RDD API和DataFrame API 247
9.4  MLlib流水線 248
9.4.1  MLlib流水線的核心概念 248
9.4.2  Pipeline 248
9.5  實戰(zhàn):MLlib的Estimator例子 250
9.5.1  使用MLlib依賴 250
9.5.2  創(chuàng)建SparkSession 250
9.5.3  創(chuàng)建DataFrame 250
9.5.4  使用Estimator 251
9.5.5  運行 252
9.6  實戰(zhàn):MLlib的Transformer例子 253
9.6.1  創(chuàng)建DataFrame 253
9.6.2  使用Transformer 253
9.6.3  運行 254
9.7  實戰(zhàn):MLlib的Pipeline例子 254
9.7.1  準備JavaBean 254
9.7.2  準備訓練數(shù)據(jù) 255
9.7.3  配置Pipeline 256
9.7.4  學習PipelineModel 256
9.7.5  運行 257
9.8  動手練習 257
練習1:使用Spark MLlib中的Estimator進行線性回歸模型的訓練 257
練習2:使用Spark MLlib中的Transformer進行特征轉(zhuǎn)換 259
練習3:使用Spark MLlib中的Pipeline進行特征轉(zhuǎn)換和模型訓練 261
9.9  本章小結(jié) 263
第 10 章  GraphX 264
10.1  GraphX概述 264
10.1.1  GraphX的核心概念 264
10.1.2  GraphX的主要功能 265
10.1.3  GraphX的實現(xiàn)原理 265
10.1.4  GraphX的應用場景 265
10.2  屬性圖 266
10.2.1  屬性圖的基本結(jié)構(gòu) 266
10.2.2  屬性圖的存儲與處理 266
10.2.3  屬性圖的圖計算功能 267
10.2.4  屬性圖的優(yōu)化 267
10.3  實戰(zhàn):GraphX從邊構(gòu)建圖 268
10.3.1  初始化JavaSparkContext 268
10.3.2  初始化Edge 268
10.3.3  初始化Graph 269
10.3.4  輸出Graph的內(nèi)容 269
10.3.5  運行 269
10.4  GraphX分區(qū)優(yōu)化 270
10.5  動手練習 271
練習:使用GraphX庫 271
10.6  本章小結(jié) 272
參考文獻 274
 

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) www.stefanvlieger.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號