Spark 大數據實時計算:基於 Scala 開發實戰
楊力
- 出版商: 人民郵電
- 出版日期: 2022-10-01
- 定價: $479
- 售價: 8.5 折 $407
- 語言: 簡體中文
- 頁數: 300
- ISBN: 7115597030
- ISBN-13: 9787115597038
-
相關分類:
JVM 語言、Spark、大數據 Big-data
下單後立即進貨 (約4週~6週)
相關主題
商品描述
本書從大數據實時計算框架Spark的編程語言Scala入手,第1~4章重點介紹函數式編程語言Scala的基礎語法、面向對象編程以及函數式編程等,再通過編程訓練案例介紹Scala這門語言的實際開發應用,為讀者後面學習Spark框架打下牢固的編程基礎。第5~10章重點介紹Spark的安裝部署、SparkCore編程、Spark SQL結構化數據處理以及Spark Streaming實時數據處理等,對它們進行詳細的剖析和解讀。最後,在第11章中通過網站運營指標統計和IP經緯度熱力圖分析兩個實戰開發項目,讓讀者充分掌握Spark大數據實時計算框架技術的應用與實操方法。
本書適合所有對大數據技術感興趣的讀者。
作者簡介
杨 力
曾任北大青鸟学术部经理兼教学总监、中信国安创客霸王课特聘讲师、兄弟连IT教育大数据讲师,致力于大数据技术的推广与普及,通过了Apache Hadoop、OCM等多项技术认证,在大中型企业的信息系统设计与实施方面有丰富的实践经验。
目錄大綱
第 1章 Scala入門基礎 1
1.1 Scala語言的特色 1
1.2 搭建Scala開發環境 3
1.2.1 安裝JDK 3
1.2.2 安裝Scala SDK 3
1.2.3 安裝IDEA Scala插件 4
1.3 Scala解釋器 7
1.3.1 啟動Scala解釋器 8
1.3.2 執行Scala代碼 8
1.3.3 退出Scala解釋器 8
1.4 Scala語法基礎 8
1.4.1 定義變量 8
1.4.2 惰性賦值 9
1.4.3 字符串 10
1.4.4 數據類型與運算符 11
1.4.5 條件表達式 12
1.5 Scala控制結構和函數 14
1.5.1 for表達式 14
1.5.2 while循環 16
1.5.3 函數 16
1.5.4 方法和函數的區別 17
1.6 方法 18
1.6.1 定義方法 18
1.6.2 方法參數 18
1.6.3 方法調用方式 19
1.7 數組 20
1.7.1 定長數組 21
1.7.2 變長數組 21
1.7.3 遍歷數組 22
1.8 元組和列表 23
1.8.1 元組 23
1.8.2 列表 24
1.8.3 Set集合 30
1.9 Map映射 32
1.9.1 不可變Map 32
1.9.2 可變Map 33
1.9.3 Map基本操作 33
1.10 函數式編程 35
1.10.1 遍歷(foreach) 35
1.10.2 使用類型推斷簡化函數定義 36
1.10.3 使用下畫線簡化函數定義 36
1.10.4 映射(map) 36
1.10.5 扁平化映射(flatMap) 37
1.10.6 過濾(filter) 38
1.10.7 排序 38
1.10.8 分組(groupBy) 40
1.10.9 聚合(reduce) 40
1.10.10 折疊(fold) 41
1.11 本章總結 42
1.12 本章習題 42
第 2章 Scala面向對象編程 43
2.1 類與對象 43
2.2 定義和訪問成員變量 44
2.3 使用下畫線初始化成員變量 46
2.4 定義成員方法 47
2.5 訪問修飾符 48
2.6 類的構造器 51
2.6.1 主構造器 51
2.6.2 輔助構造器 52
2.7 單例對象 53
2.7.1 定義單例對象 53
2.7.2 在單例對象中定義成員方法 54
2.7.3 工具類案例 54
2.8 main方法 55
2.8.1 定義main方法 55
2.8.2 實現App trait來定義入口 55
2.9 伴生對象 56
2.9.1 定義伴生對象 56
2.9.2 apply和unapply方法 57
2.10 繼承 59
2.10.1 定義語法 60
2.10.2 類繼承 60
2.10.3 單例對象繼承 61
2.10.4 override和super 61
2.11 類型判斷 62
2.11.1 isInstanceOf和asInstanceOf方法 62
2.11.2 getClass和classOf 63
2.12 抽象類 64
2.13 匿名內部類 65
2.14 特質 66
2.14.1 trait作為接口使用 66
2.14.2 trait中定義具體的字段和抽象字段 68
2.14.3 使用trait實現模板模式 69
2.14.4 對象混入trait 70
2.14.5 使用trait實現調用鏈模式 71
2.14.6 trait調用鏈 72
2.14.7 trait的構造機制 74
2.14.8 trait繼承類 74
2.15 本章總結 75
2.16 本章習題 75
第3章 Scala編程高級應用 76
3.1 樣例類 76
3.1.1 定義樣例類 76
3.1.2 樣例類方法 77
3.1.3 樣例對象 78
3.2 模式匹配 79
3.2.1 簡單匹配 79
3.2.2 守衛 80
3.2.3 匹配類型 80
3.2.4 匹配集合 81
3.2.5 變量聲明中的模式匹配 82
3.2.6 匹配樣例類 83
3.3 Option類型 83
3.4 偏函數 84
3.5 正則表達式 85
3.6 異常處理 86
3.6.1 捕獲異常 86
3.6.2 拋出異常 87
3.7 提取器 88
3.8 泛型 89
3.8.1 定義泛型方法 90
3.8.2 定義泛型類 90
3.8.3 上下界 91
3.8.4 非變、協變和逆變 92
3.9 Actor 93
3.9.1 Java並發編程的問題 94
3.9.2 Actor並發編程模型 94
3.9.3 Java並發編程與Actor並發編程 95
3.10 Actor編程案例 95
3.10.1 創建Actor 95
3.10.2 發送消息/接收消息 96
3.10.3 持續接收消息 97
3.10.4 共享線程 99
3.10.5 發送和接收自定義消息 99
3.10.6 基於Actor實現WordCount案例 101
3.11 本章總結 103
3.12 本章習題 103
第4章 Scala函數式編程思想 104
4.1 作為值的函數 104
4.2 匿名函數 105
4.3 柯里化 105
4.4 閉包 106
4.5 隱式轉換 107
4.6 隱式參數 109
4.7 Akka並發編程框架 109
4.7.1 Akka特性 110
4.7.2 Akka通信過程 110
4.7.3 創建ActorSystem 111
4.8 Akka編程入門案例 111
4.8.1 實現步驟 112
4.8.2 配置Maven模塊依賴 112
4.9 Akka定時任務 114
4.10 實現兩個進程之間的通信 116
4.11 本章總結 119
4.12 本章習題 119
第5章 Spark安裝部署與入門 120
5.1 Spark簡介 120
5.1.1 MapReduce與Spark 120
5.1.2 Spark組件 122
5.1.3 Spark生態系統 123
5.1.4 Spark架構 124
5.1.5 Spark運行部署模式 125
5.1.6 Spark遠程過程調用協議 126
5.2 Spark環境搭建 126
5.2.1 本地模式部署 126
5.2.2 Standalone集群模式 128
5.2.3 Standalone-HA集群模式 130
5.2.4 YARN集群模式 132
5.2.5 Spark命令 137
5.3 編寫Spark應用程序 139
5.3.1 Maven簡介 140
5.3.2 安裝Maven 140
5.3.3 Spark開發環境搭建 141
5.3.4 配置pom.xml文件 143
5.3.5 開發應用程序——本地運行 147
5.3.6 修改應用程序——集群運行 148
5.3.7 集群硬件配置說明 150
5.4 本章總結 152
5.5 本章習題 152
第6章 SparkCore編程 153
6.1 RDD概念與詳解 153
6.1.1 RDD簡介 153
6.1.2 RDD的主要屬性 154
6.1.3 小結 156
6.2 RDD API應用程序 156
6.3 RDD的方法(算子)分類 157
6.3.1 Transformation算子 158
6.3.2 Action算子 160
6.4 基礎練習 160
6.4.1 實現WordCount案例 161
6.4.2 創建RDD 162
6.4.3 map 163
6.4.4 filter 163
6.4.5 flatMap 164
6.4.6 sortBy 164
6.4.7 交集、並集、差集、笛卡爾積 165
6.4.8 groupByKey 165
6.4.9 groupBy 166
6.4.10 reduce 166
6.4.11 reduceByKey 166
6.4.12 repartition 167
6.4.13 count 167
6.4.14 top 168
6.4.15 take 168
6.4.16 first 168
6.4.17 keys、values 168
6.4.18 案例 169
6.5 實戰案例 169
6.5.1 統計平均年齡 169
6.5.2 統計人口信息 171
6.5.3 在IDEA中實現WordCount案例 174
6.5.4 小結 176
6.6 RDD持久化緩存 176
6.7 持久化緩存API詳解 177
6.7.1 persist方法和cache方法 177
6.7.2 存儲級別 179
6.7.3 小結 181
6.8 RDD容錯機制Checkpoint 181
6.8.1 代碼演示 181
6.8.2 容錯機制Checkpoint詳解 182
6.9 本章總結 183
6.10 本章習題 183
第7章 SparkCore運行原理 184
7.1 RDD依賴關系 184
7.1.1 窄依賴與寬依賴 184
7.1.2 對比窄依賴與寬依賴 185
7.2 DAG的生成和劃分階段 186
7.2.1 DAG的生成 186
7.2.2 DAG劃分階段 186
7.2.3 小結 188
7.3 Spark原理初探 188
7.3.1 Spark相關的應用概念 189
7.3.2 Spark基本流程概述 191
7.3.3 流程圖解 191
7.3.4 RDD在Spark中的運行過程 192
7.3.5 小結 193
7.4 RDD累加器和廣播變量 193
7.4.1 累加器 194
7.4.2 廣播變量 196
7.5 RDD的數據源 198
7.5.1 普通文本文件 198
7.5.2 Hadoop API 199
7.5.3 SequenceFile 200
7.5.4 對象文件 201
7.5.5 HBase 202
7.5.6 JDBC 204
7.6 本章總結 207
7.7 本章習題 207
第8章 Spark SQL結構化數據處理入門 208
8.1 數據分析方式 208
8.1.1 命令式 208
8.1.2 SQL式 209
8.2 Spark SQL的發展 210
8.3 數據分類和Spark SQL適用場景 211
8.3.1 結構化數據 211
8.3.2 半結構化數據 212
8.3.3 非結構化數據 213
8.4 Spark SQL特點 214
8.5 Spark SQL數據抽象 214
8.6 DataFrame簡介 215
8.7 Dataset簡介 215
8.8 RDD、DataFrame和Dataset的區別 216
8.9 Spark SQL初體驗 218
8.9.1 SparkSession入口 218
8.9.2 創建DataFrame 219
8.9.3 創建Dataset 222
8.9.4 兩種查詢風格 224
8.10 本章總結 229
8.11 本章習題 229
第9章 Spark SQL結構化數據處理高級應用 230
9.1 使用IDEA開發Spark SQL 230
9.1.1 創建DataFrame和Dataset 231
9.1.2 花式查詢 233
9.1.3 相互轉換 235
9.1.4 Spark SQL詞頻統計實戰 237
9.2 Spark SQL多數據源交互 240
9.3 Spark SQL自定義函數 242
9.3.1 自定義函數分類 242
9.3.2 UDF 243
9.3.3 UDAF 244
9.4 Spark on Hive 247
9.4.1 開啟Hive的元數據庫服務 247
9.4.2 Spark SQL整合Hive元數據庫 248
9.4.3 使用Spark SQL操作Hive表 248
9.5 本章總結 249
9.6 本章習題 249
第 10章 Spark Streaming核心編程 250
10.1 場景需求 250
10.2 Spark Streaming概述 251
10.2.1 Spark Streaming的特點 252
10.2.2 Spark Streaming實時計算所處的位置 252
10.3 Spark Streaming原理 254
10.3.1 基本流程 255
10.3.2 數據模型 255
10.4 DStream相關的API 256
10.4.1 Transformation 257
10.4.2 Output 257
10.5 Spark Streaming原理總結 258
10.6 Spark Streaming實戰 258
Spark Streaming第 一個案例WordCount 258
10.7 updateStateByKey算子 262
10.7.1 WordCount案例問題分析 262
10.7.2 代碼實現 262
10.7.3 執行步驟 263
10.8 reduceByKeyAndWindow算子 264
10.8.1 圖解reduceByKeyAndWindow算子 264
10.8.2 代碼實現 264
10.8.3 執行步驟 266
10.9 統計一定時間內的熱搜詞 266
10.9.1 需求分析 266
10.9.2 代碼實現 266
10.9.3 執行步驟 268
10.10 整合Kafka 268
10.10.1 Kafka基本概念 268
10.10.2 Kafka的特性 268
10.10.3 核心概念圖解 269
10.10.4 Kafka集群部署 270
10.10.5 Kafka常用命令 275
10.10.6 Receiver接收方式 276
10.10.7 Direct直連方式 277
10.10.8 spark-streaming-kafka-0-8版本 277
10.10.9 spark-streaming-kafka-0-10版本 282
10.11 本章總結 285
10.12 本章習題 285
第 11章 Spark綜合項目實戰 286
11.1 網站運營指標統計項目 286
11.1.1 需求分析 286
11.1.2 數據分析 287
11.1.3 代碼實現 287
11.2 熱力圖分析項目 289
11.2.1 需求分析 289
11.2.2 數據分析 289
11.2.3 項目開發 290
11.3 本章總結 300
11.4 本章習題 300