Spark大數據技術與應用(第2版)(微課版)
肖芳 張良均
相關主題
商品描述
本書以任務為導向,較為系統地介紹Spark大數據技術的相關知識。全書共9章,具體內容包括Spark概述、Scala基礎、Spark編程基礎、Spark編程進階、Spark SQL—結構化數據文件處理、Spark Streaming—實時計算框架、Spark GraphX—圖計算框架、Spark MLlib—功能強大的算法庫,以及項目案例—廣告檢測的流量作弊識別。本書的大部分章節包含實訓與課後習題,通過練習和實踐操作,可以幫助讀者鞏固所學的內容。
本書可以作為高校大數據技術類專業教材,也可作為大數據技術愛好者的自學用書。
作者簡介
肖芳,女,高級工程師。大學畢業後從事計算機軟件的研究、設計、開發、實施等方面近十年,具有多年計算機軟件開發與軟件項目管理經驗。後進入廣東水利電力職業技術學院計算機系(目前為大數據與人工智能學院)擔任專業教師,擔任過大數據數學基礎,Spark大數據快速運算、智能推薦等多門課程教學工作,曾主持和參加過多次科技廳局科研課題,負責和參加過十幾項橫向項目,獲得過中國科學院廣州分院、廣東省科學院科技成果開發二等獎。在各類期刊上發表過多篇論文。指導學生畢業設計獲得過學院畢業設計特別指導獎。
張良均,資深大數據專家,廣東泰迪智能科技股份有限公司董事長,國家科技部入庫技術專家,教育部全國專業學位水平評估專家,工信部教育與考試中心入庫專家,中國工業與應用數學學會理事,廣東省工業與應用數學學會副理事長,廣東省高等職業教育教學指導委員會委員,華南師範大學、中南財經政法大學等40余所高校校外碩導或兼職教授,泰迪杯全國數據挖掘挑戰賽發起人。曾在國內外重要學術刊物上發表學術論文10余篇,主導編寫圖書專著60余部,其中獲普通高等教育“十一五”規劃教材一部,“十三五”職業教育國家規劃教材一部;參與標準建設4項,主持國家級課題1項、省部級課題4項。獲得SAS、SPSS數據挖掘認證及Hadoop開發工程師證書,具有信訪、電力、電信、銀行、制造企業、電子商務和電子政務的項目經驗和行業背景,並榮獲中國產學研合作促進獎、中國南方電網公司發明專利一等獎、廣東省農業技術推廣二等獎、廣州市荔灣區科學技術進步獎。
目錄大綱
第 1章 Spark概述 1
任務1.1 認識Spark 1
1.1.1 了解Spark的發展歷史 1
1.1.2 了解Spark的特點 2
1.1.3 認識Spark的生態圈 4
1.1.4 了解Spark的應用場景 5
任務1.2 搭建Spark集群 6
1.2.1 搭建單機版集群 6
1.2.2 搭建單機偽分布式集群 6
1.2.3 搭建完全分布式集群 7
任務1.3 了解Spark運行架構與原理 11
1.3.1 了解Spark架構 11
1.3.2 了解Spark作業運行流程 12
1.3.3 了解Spark核心數據集RDD 15
1.3.4 了解Spark核心原理 17
小結 19
課後習題 19
第 2章 Scala基礎 20
任務2.1 安裝與運行Scala 21
2.1.1 了解Scala語言 21
2.1.2 了解Scala特性 21
2.1.3 安裝Scala 22
2.1.4 運行Scala 24
任務2.2 定義函數識別號碼類型 24
2.2.1 了解數據類型 25
2.2.2 定義與使用常量、變量 25
2.2.3 使用運算符 26
2.2.4 定義與使用數組 27
2.2.5 定義與使用函數 30
2.2.6 任務實現 32
任務2.3 統計廣州號碼段數量 33
2.3.1 使用if判斷 34
2.3.2 使用for循環 35
2.3.3 任務實現 36
任務2.4 根據歸屬地對手機號碼段進行分組 37
2.4.1 定義與使用列表 37
2.4.2 定義與使用集合 39
2.4.3 定義與使用映射 39
2.4.4 定義與使用元組 40
2.4.5 使用函數組合器 40
2.4.6 任務實現 41
任務2.5 編寫手機號碼歸屬地信息查詢程序 42
2.5.1 定義Scala類 42
2.5.2 使用Scala單例模式 44
2.5.3 使用Scala模式匹配 45
2.5.4 讀寫文件 46
2.5.5 任務實現 46
小結 47
實訓 47
實訓1 使用Scala編寫函數過濾文本中的回文單詞 47
實訓2 使用Scala編程輸出九九乘法表 48
課後習題 49
第3章 Spark編程基礎 51
任務3.1 讀取員工薪資數據創建RDD 52
3.1.1 從內存中讀取數據創建RDD 52
3.1.2 從外部存儲系統中讀取數據創建RDD 53
3.1.3 任務實現 54
任務3.2 查詢上半年實際薪資排名前3的員工信息 55
3.2.1 使用map()方法轉換數據 55
3.2.2 使用sortBy()方法進行排序 55
3.2.3 使用collect()方法查詢數據 56
3.2.4 使用flatMap()方法轉換數據 57
3.2.5 使用take()方法查詢某幾個值 57
3.2.6 任務實現 58
任務3.3 查詢上半年或下半年實際薪資大於20萬元的員工姓名 59
3.3.1 使用union()方法合並多個RDD 59
3.3.2 使用filter()方法進行過濾 60
3.3.3 使用distinct()方法進行去重 60
3.3.4 使用簡單的集合操作 60
3.3.5 任務實現 62
任務3.4 輸出每位員工2020年的總實際薪資 63
3.4.1 了解鍵值對RDD 63
3.4.2 創建鍵值對RDD 64
3.4.3 使用鍵值對RDD的keys和values方法 64
3.4.4 使用鍵值對RDD的reduceByKey()方法 65
3.4.5 使用鍵值對RDD的groupByKey()方法 66
3.4.6 任務實現 66
任務3.5 查詢每位員工2020年的月均實際薪資 67
3.5.1 使用join()方法連接兩個RDD 67
3.5.2 使用zip()方法組合兩個RDD 69
3.5.3 使用combineByKey()方法合並相同鍵的值 70
3.5.4 使用lookup()方法查找指定鍵的值 71
3.5.5 任務實現 71
任務3.6 存儲匯總後的員工薪資為文本文件 72
3.6.1 讀取與存儲JSON文件 72
3.6.2 讀取與存儲CSV文件 75
3.6.3 讀取與存儲SequenceFile文件 78
3.6.4 讀取與存儲文本文件 79
3.6.5 任務實現 80
小結 82
實訓 82
實訓1 通過Spark編程統計某月份的客戶總消費金額 82
實訓2 通過Spark編程計算各城市的平均氣溫 82
課後習題 83
第4章 Spark編程進階 86
任務4.1 搭建Spark開發環境 87
4.1.1 下載與安裝IntelliJ IDEA 87
4.1.2 Scala插件安裝與使用 89
4.1.3 配置Spark運行環境 94
4.1.4 運行Spark程序 96
任務4.2 統計分析競賽網站用戶訪問日誌數據 104
4.2.1 設置RDD持久化 104
4.2.2 設置數據分區 105
4.2.3 計算競賽網站每月的訪問量 109
4.2.4 任務實現 111
小結 112
實訓 自定義分區器實現按人物標簽進行數據區分 112
課後習題 113
第5章 Spark SQL—結構化數據文件處理 116
任務5.1 認識Spark SQL 117
5.1.1 了解Spark SQL基本概念 117
5.1.2 配置Spark SQL 117
5.1.3 了解Spark SQL與Shell交互 119
任務5.2 掌握DataFrame基礎操作 120
5.2.1 創建DataFrame對象 120
5.2.2 查看DataFrame數據 122
5.2.3 掌握DataFrame查詢操作 125
5.2.4 掌握DataFrame輸出操作 134
任務5.3 探索分析房屋售價數據 136
5.3.1 獲取數據 136
5.3.2 探索字段值分布 137
5.3.3 統計各季度房屋銷量和銷售額 139
5.3.4 探索分析房屋評分 141
5.3.5 探索修繕過的房屋房齡分布 142
5.3.6 任務實現 143
小結 145
實訓 146
實訓1 基於DataFrame實現老師教學質量統計分析 146
實訓2 基於DataFrame實現學生成績統計分析 147
課後習題 148
第6章 Spark Streaming—實時計算框架 150
任務6.1 初識Spark Streaming 151
6.1.1 了解Spark Streaming基本概念 151
6.1.2 了解Spark Streaming運行原理 151
6.1.3 初步使用Spark Streaming 152
任務6.2 掌握DStream基礎操作 155
6.2.1 了解DStream編程模型 155
6.2.2 使用DStream轉換操作 155
6.2.3 使用DStream窗口操作 157
6.2.4 使用DStream輸出操作 160
任務6.3 實現書籍熱度實時計算 165
6.3.1 獲取輸入數據源 165
6.3.2 計算用戶評分次數及平均評分 168
6.3.3 計算書籍被評分次數及平均評分 169
6.3.4 實時計算書籍熱度 171
6.3.5 任務實現 172
小結 174
實訓 174
實訓1 使用Spark Streaming實現課程實時查找 174
實訓2 使用Spark Streaming實時統計廣告點擊量前3名 175
課後習題 176
第7章 Spark GraphX—圖計算框架 179
任務7.1 認識Spark GraphX 180
7.1.1 了解圖的基本概念 180
7.1.2 了解圖計算的應用 181
7.1.3 了解GraphX的基礎概念 181
7.1.4 了解GraphX的發展歷程 181
任務7.2 了解GraphX常用API 182
7.2.1 創建與存儲圖 182
7.2.2 查詢與轉換數據 188
7.2.3 轉換結構與關聯聚合數據 195
任務7.3 統計網頁價值排名前10的網頁 203
7.3.1 構建網頁結構圖 203
7.3.2 計算網頁得分 204
7.3.3 找出排名前10的網頁 204
7.3.4 任務實現 205
小結 207
實訓 207
實訓1 使用Spark GraphX實現家庭關系網絡圖構建及查詢 207
實訓2 使用Spark GraphX統計最具影響力用戶 208
課後習題 210
第8章 Spark MLlib—功能強大的算法庫 213
任務8.1 了解MLlib算法庫 215
8.1.1 了解機器學習算法 215
8.1.2 使用MLlib 216
任務8.2 使用決策樹算法實現網絡攻擊類型識別 232
8.2.1 分析思路 232
8.2.2 探索分析數據 233
8.2.3 數據特征處理 236
8.2.4 MLlib實現決策樹 238
8.2.5 任務實現 240
小結 243
實訓 243
實訓1 使用K-Means劃分電影熱度等級 243
實訓2 使用邏輯回歸算法實現提升員工工作滿意度 244
課後習題 245
第9章 項目案例—廣告檢測的流量作弊識別 248
任務9.1 分析需求 248
9.1.1 常見的廣告流量作弊方式 249
9.1.2 分析需求 249
任務9.2 探索分析廣告流量數據 250
9.2.1 數據說明 250
9.2.2 基礎探索數據 251
9.2.3 探索作弊流量的數據特征 255
任務9.3 預處理數據並構建特征 259
9.3.1 刪除缺失值字段 259
9.3.2 構建廣告流量作弊識別特征 260
任務9.4 構建與評估分類模型 265
9.4.1 構建與評估邏輯回歸模型 265
9.4.2 構建與評估隨機森林模型 267
9.4.3 模型加載 269
小結 270

