Spark大數據技術與應用(微課版)(第3版)

肖芳,張良均

  • Spark大數據技術與應用(微課版)(第3版)-preview-1
Spark大數據技術與應用(微課版)(第3版)-preview-1

相關主題

商品描述

本書以項目任務為導向,較為全面地介紹Spark大數據技術的相關知識。全書共9個項目,每個項目均搭配有具體的任務,項目內容包括搭建Spark集群——Spark概述、查詢手機號碼信息——Scala基礎、查詢和統計員工薪資數據——Spark Shell編程、統計分析競賽網站用戶訪問日誌數據——Spark IDE編程、分析水稻品種審定數據——Spark SQL結構化數據文件處理、實時計算書籍熱度——Spark Streaming實時計算框架、統計得分排名前10的網頁——Spark GraphX圖計算框架、飲用水源合格性預測——Spark MLlib機器學習算法庫,以及廣告檢測的流量作弊識別——Spark綜合實戰。本書的大部分項目包含實訓與課後習題,通過操作實踐和練習,可以幫助讀者鞏固所學的內容。 本書可以作為高校大數據技術類專業的教材,也可作為大數據開發技術人員的參考書,以及大數據技術愛好者的自學用書。

作者簡介

肖芳,女,高級工程師。2003年進入廣東水利電力職業技術學院計算機信息工程系(現為大數據與人工智能學院學院),擔任計算機信息管理、大數據技術專業專任教師。2018年作為主編編寫出版《Spark大數據技術與應用》,2020年12月被評為教育部“十三五”職業教育國家規劃教材。2022年作為主編編寫出版《Spark大數據技術與應用(第2版)(微課版)》,2024年6月被評為教育部“十四五”職業教育國家規劃教材。曾獲中國科學院廣州分院廣東省科學院科技成果開發二等獎,在各類期刊上發表過多篇論文,獲得3項軟件著作權。

目錄大綱

項目1 搭建Spark集群——Spark概述 1 學習目標 1 項目背景 1 思維導圖 2 知識準備 2 1.1 Spark簡介 2 1.1.1 Spark的特點 2 1.1.2 Spark生態圈 3 1.1.3 Spark的應用場景 4 1.2 Spark運行架構與原理 5 1.2.1 Spark架構 5 1.2.2 Spark作業運行流程 6 1.2.3 Spark核心數據集RDD 9 1.2.4 Spark核心原理 11 項目實施 13 任務1.1 搭建單機版環境 13 任務1.2 搭建單機偽分布式集群 14 任務1.3 搭建完全分布式集群 15 【項目小結】 18 【課後習題】 19 項目2 查詢手機號碼信息——Scala基礎 20 學習目標 20 項目背景 20 思維導圖 21 知識準備 22 2.1 安裝與運行Scala 22 2.1.1 Scala語言 22 2.1.2 Scala特性 22 2.1.3 安裝Scala 22 2.1.4 運行Scala 24 2.2 Scala基本語法 25 2.2.1 Scala數據類型 25 2.2.2 定義與使用常量、變量 27 2.2.3 使用運算符 27 2.2.4 定義與使用數組 29 2.2.5 定義與使用函數 30 2.3 Scala控制結構 33 2.3.1 使用if判斷 33 2.3.2 使用for循環 34 2.4 Scala集合類型 36 2.4.1 定義與使用列表 36 2.4.2 定義與使用集合 38 2.4.3 定義與使用映射 39 2.4.4 定義與使用元組 39 2.4.5 使用函數組合器 39 2.5 Scala面向對象編程 41 2.5.1 定義Scala類 41 2.5.2 使用Scala單例模式 42 2.5.3 使用Scala模式匹配 43 2.5.4 讀寫文件 44 項目實施 45 任務2.1 識別號碼類型 45 任務2.2 統計廣州號碼段數量 46 任務2.3 根據歸屬地對手機號碼段分組 47 任務2.4 編寫手機號碼歸屬地信息查詢程序 47 【項目小結】 48 【實訓】 49 實訓1 使用Scala編寫函數過濾文本中的回文單詞 49 實訓2 使用Scala編程輸出九九乘法表 49 【課後習題】 50 項目3 查詢和統計員工薪資數據——Spark Shell編程 52 學習目標 52 項目背景 52 思維導圖 53 知識準備 53 3.1 創建Spark RDD 53 3.1.1 通過內存中已有數據創建RDD 54 3.1.2 從外部存儲系統中讀取數據創建RDD 55 3.2 RDD基礎操作 56 3.2.1 使用map()方法轉換數據 56 3.2.2 使用sortBy()方法進行排序 56 3.2.3 使用collect()方法查詢數據 57 3.2.4 使用flatMap()方法轉換數據 58 3.2.5 使用take()方法獲取數據 58 3.3 RDD進階操作 59 3.3.1 使用filter()方法進行過濾 59 3.3.2 使用distinct()方法進行去重 59 3.3.3 使用簡單的集合操作 60 3.4 鍵值對RDD操作 62 3.4.1 鍵值對RDD 62 3.4.2 創建鍵值對RDD 62 3.4.3 使用鍵值對RDD的keys與values方法 62 3.4.4 使用鍵值對RDD的reduceByKey()方法 63 3.4.5 使用鍵值對RDD的groupByKey()方法 63 3.5 RDD連接操作 64 3.5.1 使用join()方法連接兩個RDD 64 3.5.2 使用zip()方法組合兩個RDD 66 3.5.3 使用combineByKey()方法合並相同鍵的值 66 3.5.4 使用lookup()方法查找指定鍵的值 68 3.6 RDD文件讀寫 68 3.6.1 讀取與存儲JSON文件 68 3.6.2 讀取與存儲CSV文件 70 3.6.3 讀取與存儲SequenceFile文件 72 3.6.4 讀取與存儲ObjectFile文件 73 3.6.5 讀取與存儲純文本文件 74 項目實施 75 任務3.1 讀取員工薪資數據創建RDD 75 任務3.2 查詢上半年實際薪資排名前3的員工信息 76 任務3.3 輸出上半年或下半年實際薪資大於20萬元的員工姓名 77 任務3.4 統計每位員工2023年的總實際薪資 77 任務3.5 查詢每位員工2023年的月均實際薪資 78 任務3.6 將匯總後的員工薪資存儲為文本文件 79 【項目小結】 80 【實訓】 80 實訓1 通過Spark編程統計某月份的客戶總消費金額 80 實訓2 通過Spark編程計算各城市的平均氣溫 81 【課後習題】 81 項目4 統計分析競賽網站用戶訪問日誌數據——Spark IDE編程 84 學習目標 84 項目背景 84 思維導圖 85 知識準備 86 4.1 搭建Spark開發環境 86 4.1.1 下載與安裝IntelliJ IDEA 86 4.1.2 Scala插件安裝與使用 87 4.1.3 AI編程插件的安裝與使用 90 4.1.4 配置Spark運行環境 93 4.1.5 運行Spark程序 95 4.2 Spark持久化和數據分區 102 4.2.1 設置RDD持久化(緩存) 102 4.2.2 設置數據分區 104 項目實施 107 任務4.1 計算競賽網站每月的訪問量 107 任務4.2 自定義分區保存 108 【項目小結】 110 【實訓】 110 自定義分區器實現按人物標簽進行數據區分 110 【課後習題】 111 項目5 分析水稻品種審定數據——Spark SQL結構化數據文件處理 114 學習目標 114 項目背景 114 思維導圖 115 知識準備 115 5.1 Spark SQL簡介 115 5.1.1 Spark SQL基本概念 116 5.1.2 配置Spark SQL 117 5.1.3 Spark SQL與Shell的交互 118 5.2 DataFrame基礎操作 119 5.2.1 創建DataFrame對象 119 5.2.2 查看DataFrame數據 121 5.2.3 DataFrame查詢操作 125 5.2.4 DataFrame輸出操作 135 項目實施 137 任務5.1 獲取數據 137 任務5.2 探索與預處理數據 138 任務5.3 統計分析數據內容 140 【項目小結】 141 【實訓】 142 實訓1 基於DataFrame實現教師教學質量統計分析 142 實訓2 基於DataFrame實現學生成績統計分析 143 【課後習題】 144 項目6 實時計算書籍熱度——Spark Streaming實時計算框架 146 學習目標 146 項目背景 146 思維導圖 147 知識準備 147 6.1 Spark Streaming簡介 147 6.1.1 Spark Streaming框架 148 6.1.2 Spark Streaming運行原理 148 6.1.3 初步使用Spark Streaming 148 6.2 DStream編程模型及其基礎操作 151 6.2.1 DStream編程模型 151 6.2.2 使用DStream轉換操作 151 6.2.3 使用DStream窗口操作 153 6.2.4 使用DStream輸出操作 155 項目實施 159 任務6.1 獲取輸入數據源 159 任務6.2 計算用戶評分次數及平均評分 161 任務6.3 計算書籍被評分次數及平均評分 162 任務6.4 實時計算書籍熱度 163 【項目小結】 165 【實訓】 166 實訓1 使用Spark Streaming實現課程實時查找 166 實訓2 使用Spark Streaming實時統計廣告點擊量前3名 166 【課後習題】 168 項目7 統計得分排名前10的網頁——Spark GraphX圖計算框架 171 學習目標 171 項目背景 171 思維導圖 172 知識準備 173 7.1 Spark GraphX簡介 173 7.1.1 圖的基本概念 173 7.1.2 圖計算的應用 173 7.1.3 GraphX的基本概念 174 7.1.4 GraphX的發展 174 7.2 GraphX常用API 175 7.2.1 創建與存儲圖 175 7.2.2 查詢與轉換數據 179 7.2.3 轉換結構與關聯聚合數據 185 項目實施 191 任務7.1 構建網頁結構圖 191 任務7.2 計算網頁得分 192 任務7.3 找出排名前10的網頁 193 任務7.4 完整程序實現 194 【項目小結】 195 【實訓】 196 實訓1 使用GraphX實現家庭關系網絡圖構建及查詢 196 實訓2 使用GraphX統計最具影響力用戶 197 【課後習題】 198 項目8 飲用水源合格性預測——Spark MLlib機器學習算法庫 201 學習目標 201 項目背景 201 思維導圖 202 知識準備 203 8.1 機器學習算法簡介 203 8.1.1 機器學習概念 203 8.1.2 機器學習算法 203 8.2 使用Spark MLlib機器學習算法庫 204 8.2.1 Spark MLlib簡介 204 8.2.2 Spark MLlib發展歷史 204 8.2.3 算法與算法包 205 8.2.4 Spark MLlib中的模型評估 219 項目實施 219 任務8.1 讀取數據 219 任務8.2 探索性數據分析 220 任務8.3 數據標準化 222 任務8.4 基於隨機森林實現飲用水源合格性預測 222 【項目小結】 223 【實訓】 223 實訓1 使用K-Means劃分電影熱度等級 223 實訓2 使用邏輯回歸算法實現員工離職預測 224 【課後習題】 225 項目9 廣告檢測的流量作弊識別——Spark綜合實戰 227 學習目標 227 項目背景 227 思維導圖 228 項目實施 228 任務9.1 分析需求 228 9.1.1 常見的流量作弊方式 228 9.1.2 需求分析 229 任務9.2 探索分析廣告流量數據 230 9.2.1 數據說明 230 9.2.2 基礎探索數據 231 9.2.3 探索虛假流量的數據特征 234 任務9.3 預處理數據並構建特征 238 9.3.1 刪除缺失值字段 238 9.3.2 構建廣告流量作弊識別特征 239 任務9.4 構建與評估分類模型 243 9.4.1 構建與評估邏輯回歸模型 243 9.4.2 構建與評估隨機森林模型 245 9.4.3 模型加載 247 【項目小結】 248