Spark大數據技術與應用(微課版)
賀鑫 史宏
相關主題
商品描述
本書以初學者的角度詳細介紹Spark架構的核心技術,主要圍繞Spark的架構、Spark的開發語言、Spark模塊的主要功能展開;以IDEA為主要開發工具,CentOS為運行環境,采用“理實一體化”授課模式。本書內容包括Spark導論,Spark環境搭建與使用,Scala語言,Spark彈性分布式數據集,Spark SQL、DataFrame和DataSet,Kafka分布式發布-訂閱消息系統,Spark Streaming實時計算框架,Spark MLlib 機器學習算法庫,Redis數據庫,綜合案例—Spark電商實時數據處理。通過對本書的學習,讀者可以充分理解常用數據預處理方法的精髓,掌握具體技術細節,並在實踐中提升實際開發能力,為學習大數據技能打下紮實基礎。
本書可以作為高等院校計算機、軟件工程、數據科學與大數據技術等相關專業的教材,也可作為相關技術人員的參考書。
作者簡介
千鋒教育 1.千鋒教育采用全程面授高品質、高成本培養模式,教學大綱緊跟企業需求,擁有全國一體化就業保障服務,成為學員信賴的IT職業教育品牌。 2.獲得榮譽包括:中關村移動互聯網產業聯盟副理事長單位、中國軟件協會教育培訓委員會認證一級培訓機構、中關村國際孵化軟件協會授權中關村移動互聯網學院、教育部教育管理信息中心指定移動互聯網實訓基地等。
目錄大綱
第1章 Spark導論 1
1.1 認識Spark 1
1.1.1 Spark的演進路線 1
1.1.2 Spark的特點 2
1.1.3 Spark與Hadoop的聯系 3
1.2 Spark的生態系統 4
1.2.1 Spark Core 5
1.2.2 Spark SQL 5
1.2.3 Spark Streaming 5
1.2.4 Spark MLlib 5
1.2.5 Spark GraphX 5
1.3 Spark運行模式 5
1.3.1 Standalone模式 6
1.3.2 Mesos模式 6
1.3.3 YARN模式 6
1.4 Spark架構 6
1.4.1 Spark架構組成 6
1.4.2 Spark架構運行流程 7
1.4.3 Spark架構特點 7
1.5 Spark應用場景 8
1.6 本章小結 8
1.7 習題 8
第2章 Spark環境搭建與使用 10
2.1 搭建環境前的準備 10
2.1.1 Spark的下載 10
2.1.2 Scala的下載 11
2.1.3 Spark的前置配置 13
2.2 Spark集群的部署與操作 14
2.2.1 Spark集群的部署 14
2.2.2 Spark集群的啟動與停止 17
2.3 第一個Spark程序 19
2.4 Spark Shell的啟動 21
2.5 本章小結 21
2.6 習題 21
第3章 Scala語言 23
3.1 Scala簡介 23
3.1.1 什麼是Scala 23
3.1.2 Scala的特性 24
3.1.3 Scala的優勢 24
3.2 Scala的安裝 25
3.2.1 Windows下安裝Scala
編譯器 25
3.2.2 Linux下安裝Scala
編譯器 26
3.3 Scala基礎 26
3.3.1 Scala快速入門 26
3.3.2 在IntelliJ IDEA中創建Scala
項目 27
3.4 Scala的基本語法 28
3.4.1 聲明變量 29
3.4.2 定義字符串 29
3.4.3 數據類型 31
3.4.4 運算符 32
3.4.5 塊表達式 33
3.5 Scala的流程控制結構 33
3.5.1 順序結構 33
3.5.2 分支結構 34
3.5.3 循環結構 36
3.5.4 breakable和break()方法 38
3.6 Scala的方法與函數 39
3.6.1 Scala中方法的定義和調用 39
3.6.2 Scala中函數的定義和調用 42
3.6.3 Scala中將方法轉換成函數 43
3.7 Scala面向對象的特性 44
3.7.1 類和對象 44
3.7.2 private關鍵字 45
3.7.3 繼承 45
3.7.4 單例對象 46
3.7.5 伴生對象 46
3.7.6 構造器 47
3.7.7 特質 48
3.7.8 抽象類 50
3.8 Scala的數據結構 50
3.8.1 數組 50
3.8.2 元組 52
3.8.3 集合 53
3.9 lazy關鍵字 56
實戰訓練:數組合並去重 57
3.10 本章小結 59
3.11 習題 59
第4章 Spark彈性分布式數據集 61
4.1 RDD簡介 61
4.1.1 RDD的產生背景 61
4.1.2 RDD的特性 62
4.2 RDD的創建操作 64
4.2.1 從文件系統中加載數據創建
RDD 64
4.2.2 通過並行集合創建RDD 64
4.2.3 從父RDD轉換成新的子
RDD 64
4.3 RDD算子 64
4.3.1 轉換算子 65
4.3.2 動作算子 71
4.3.3 RDD常用算子練習 72
4.3.4 算子進階 74
實戰訓練4-1:WordCount詞頻統計
案例 77
4.4 RDD的分區 78
4.5 RDD的依賴關系 79
4.5.1 劃分依賴的背景 79
4.5.2 劃分依賴的依據 80
4.5.3 窄依賴 80
4.5.4 寬依賴 80
4.5.5 Stage的劃分 81
4.6 RDD機制 81
4.6.1 持久化機制 81
4.6.2 RDD緩存方式 81
4.6.3 容錯機制Checkpoint 82
4.7 Spark作業流程 83
4.7.1 DAG的生成 83
4.7.2 任務調度流程 83
4.7.3 提交任務的4個階段 84
4.8 共享變量 84
4.8.1 廣播變量 85
4.8.2 累加器 85
實戰訓練4-2:通過相關信息計算用戶
停留時間 85
實戰訓練4-3:統計學生信息 87
4.9 本章小結 92
4.10 習題 93
第5章 Spark SQL、DataFrame和
DataSet 95
5.1 Spark SQL簡介 95
5.1.1 Spark SQL的概念 95
5.1.2 Spark SQL的特點 96
5.1.3 Spark SQL的運行架構 97
5.2 DataFrame基礎知識 98
5.2.1 DataFrame概念 98
5.2.2 創建DataFrame對象 99
5.2.3 DataFrame常用操作 99
5.3 DataSet基礎知識 100
5.3.1 DataSet編程 101
5.3.2 DataSet的DSL風格操作 101
5.4 將RDD轉為DataFrame的
操作 102
5.4.1 通過反射推斷Schema 102
5.4.2 DSL風格語法 103
5.4.3 通過StructType直接指定
Schema 104
5.5 RDD、DataFrame和DataSet的
區別 105
5.5.1 RDD的優缺點 105
5.5.2 DataFrame的優缺點 106
5.5.3 DataSet的優缺點 106
5.5.4 Spark SQL的性能與優化 106
5.6 通過Spark SQL操作數據源 106
5.6.1 操作MySQL數據源 106
5.6.2 操作Hive數據源 108
實戰訓練5-1:獲取連續活躍用戶的
記錄 108
實戰訓練5-2:計算店鋪銷售額 110
5.7 本章小結 113
5.8 習題 113
第6章 Kafka分布式發布-訂閱消息
系統 115
6.1 Kafka簡介 115
6.1.1 什麼是Kafka 115
6.1.2 消息系統簡介 116
6.1.3 Kafka術語 117
6.2 Kafka與傳統消息系統的區別 117
6.2.1 應用場景 117
6.2.2 架構模型 118
6.2.3 吞吐量 118
6.2.4 可用性 118
6.2.5 集群負載均衡 118
6.3 Kafka工作原理 118
6.3.1 Kafka的拓撲結構 118
6.3.2 分析Kafka工作流程 119
6.4 Kafka集群的部署與測試 121
6.4.1 集群部署的基礎環境準備 121
6.4.2 安裝Kafka 121
6.4.3 啟動Kafka服務並進行
測試 123
6.5 Kafka的入門使用 124
6.5.1 Kafka命令行的入門使用 124
6.5.2 Kafka API案例 124
6.6 Kafka整合Flume 126
6.7 Kafka涉及的問題 127
6.7.1 存儲機制 127
6.7.2 Kafka是如何保證數據
不丟失的 127
6.7.3 如何消費已經被消費過的
數據 128
6.7.4 Kafka Partition和Consumer的
數量關系 128
6.7.5 Kafka Topic 副本問題 129
6.7.6 ZooKeeper如何管理
Kafka 129
實戰訓練:使用Kafka生產車輛模擬
信息 129
6.8 本章小結 133
6.9 習題 133
第7章 Spark Streaming實時計算
框架 135
7.1 流式計算概述 135
7.1.1 流式計算簡介 135
7.1.2 常用的流式計算框架 136
7.2 Spark Streaming概述 137
7.2.1 Spark Streaming簡介 137
7.2.2 Spark Streaming工作原理 137
7.3 Spark的DStream 141
7.3.1 DStream概念 141
7.3.2 DStream的轉換操作 142
7.4 Spark Streaming的數據源 144
7.4.1 基本數據源 144
7.4.2 高級數據源之Kafka 145
7.5 DStream的窗口操作 150
7.6 DStream的輸出操作 151
7.7 Spark Streaming的Checkpoint
機制 153
7.7.1 Spark Streaming Checkpoint
概述 153
7.7.2 Checkpoint-MySQL校驗 153
7.7.3 Checkpoint-Redis校驗 154
實戰訓練:新聞熱詞排序 155
7.8 本章小結 157
7.9 習題 157
第8章 Spark MLlib機器學習
算法庫 159
8.1 初識機器學習 159
8.1.1 什麼是機器學習 159
8.1.2 機器學習的應用 160
8.1.3 分類和聚類 160
8.1.4 常見的分類與聚類算法 160
8.1.5 監督學習、無監督學習與
半監督學習 161
8.2 機器學習算法庫MLlib概述 161
8.2.1 MLlib簡介 161
8.2.2 Spark機器學習的工作
流程 161
8.2.3 Spark MLlib的架構 162
8.3 數據類型 162
8.3.1 本地向量 162
8.3.2 標簽點 163
8.3.3 本地矩陣 164
8.4 Spark MLlib的基本統計方法 165
8.4.1 摘要統計 165
8.4.2 相關性 165
8.4.3 分層抽樣 167
8.5 分類和回歸 168
8.5.1 線性支持向量機 168
8.5.2 邏輯回歸 169
8.5.3 線性最小二乘法 170
8.5.4 流的線性回歸 171
8.6 隨機森林 171
8.6.1 隨機註入 172
8.6.2 隨機森林的預測 172
8.6.3 3個案例 172
8.7 樸素貝葉斯 174
8.8 協同過濾 175
8.8.1 協同過濾推薦算法的原理 175
8.8.2 案例需求 175
8.8.3 算法實現 176
8.8.4 計算相似度的3種常用
方法 178
8.8.5 案例—如何使用協同
過濾 179
8.8.6 使用協同過濾算法時的常見
問題 179
實戰訓練:利用MLlib實現電影推薦
引擎 180
8.9 本章小結 183
8.10 習題 183
第9章 Redis數據庫 185
9.1 Redis簡介 185
9.1.1 常見的Redis應用場景 185
9.1.2 Redis的特性 186
9.1.3 持久化機制 187
9.2 Redis的安裝和啟動 187
9.2.1 Redis的安裝 187
9.2.2 前端啟動 189
9.2.3 後端啟動 189
9.3 Redis的客戶端 190
9.3.1 Redis自帶的客戶端 190
9.3.2 Redis桌面管理工具 190
9.3.3 Java客戶端Jedis 191
9.4 Redis的數據類型 192
9.5 Redis的持久化和高可用性 194
9.5.1 RDB方式和AOF方式 194
9.5.2 Redis的高可用性 196
實戰訓練:Spark SQL整合Redis分析
電商數據 197
9.6 本章小結 199
9.7 習題 199
第10章 綜合案例—Spark電商實時
數據處理 201
10.1 項目概述 201
10.1.1 介紹項目背景 201
10.1.2 設計項目架構 201
10.2 搭建項目環境 202
10.3 初始化項目結構 203
10.3.1 創建Maven工程 203
10.3.2 構建SparkSession和
StreamingContext實例
對象 207
10.3.3 構建屬性配置文件 208
10.3.4 配置Spark Streaming停止
工具 210
10.4 開發訂單數據模塊 211
10.4.1 模擬訂單數據 211
10.4.2 啟動Kafka服務 213
10.5 訂單數據處理模塊 214
10.6 開發報表 216
10.7 本章小結 218

