●第1章 大數據技術概述 1 1.1 大數據的概念與關鍵技術 21.1.1 大數據的概念 21.1.2 大數據關鍵技術 2 1.2 代表性大數據技術 41.2.1 Hadoop 41.2.2 Spark 81.2.3 Flink 101.2.4 Beam 11 1.3 編程語言的選擇 12 1.4 在線資源 13 1.5 本章小結 14 1.6 習題 14 實驗1 Linux繫統的安裝和常用命令 15一、實驗目的 15二、實驗平臺 15三、實驗內容和要求 15四、實驗報告 16第2章 Scala語言基礎 17 2.1 Scala語言概述 182.1.1 計算機的緣起 182.1.2 編程範式 192.1.3 Scala簡介 202.1.4 Scala的安裝 212.1.5 HelloWorld 21 2.2 Scala基礎知識 232.2.1 基本數據類型和變量 232.2.2 輸入/輸出 262.2.3 控制結構 282.2.4 數據結構 31 2.3 面向對像編程基礎 372.3.1 類 372.3.2 對像 422.3.3 繼承 472.3.4 參數化類型 502.3.5 特質 522.3.6 模式匹配 552.3.7 包 58 2.4 函數式編程基礎 592.4.1 函數的定義與使用 602.4.2 高階函數 612.4.3 閉包 622.4.4 偏應用函數和Curry化 622.4.5 針對容器的操作 642.4.6 函數式編程實例 69 2.5 本章小結 70 2.6 習題 70 實驗2 Scala編程初級實踐 71一、實驗目的 71二、實驗平臺 71三、實驗內容和要求 72四、實驗報告 75第3章 Spark的設計與運行原理 76 3.1 概述 77 3.2 Spark生態繫統 78 3.3 Spark運行架構 793.3.1 基本概念 793.3.2 架構設計 803.3.3 Spark運行基本流程 813.3.4 RDD的設計與運行原理 82 3.4 Spark的部署方式 91 3.5 本章小結 92 3.6 習題 93第4章 Spark環境搭建和使用方法 94 4.1 安裝Spark 954.1.1 基礎環境 954.1.2 下載安裝文件 954.1.3 配置相關文件 964.1.4 Spark和Hadoop的交互 97 4.2 在spark-shell中運行代碼 974.2.1 spark-shell命令 984.2.2 啟動spark-shell 99 4.3 開發Spark獨立應用程序 994.3.1 安裝編譯打包工具 1004.3.2 編寫Spark應用程序代碼 1014.3.3 編譯打包 1014.3.4 通過spark-submit運行程序 104 4.4 Spark集群環境搭建 1044.4.1 集群概況 1054.4.2 搭建Hadoop集群 1054.4.3 在集群中安裝Spark 1064.4.4 配置環境變量 1064.4.5 Spark的配置 1064.4.6 啟動Spark集群 1074.4.7 關閉Spark集群 107 4.5 在集群上運行Spark應用程序 1084.5.1 啟動Spark集群 1084.5.2 采用獨立集群管理器 1084.5.3 采用Hadoop YARN管理器 109 4.6 本章小結 110 4.7 習題 111 實驗3 Spark和Hadoop的安裝 111一、實驗目的 111二、實驗平臺 111三、實驗內容和要求 111四、實驗報告 112第5章 RDD編程 113 5.1 RDD編程基礎 1145.1.1 RDD創建 1145.1.2 RDD操作 1155.1.3 持久化 1215.1.4 分區 1225.1.5 一個綜合實例 126 5.2 鍵值對RDD 1285.2.1 鍵值對RDD的創建 1285.2.2 常用的鍵值對轉換操作 1295.2.3 一個綜合實例 133 5.3 數據讀寫 1345.3.1 文件數據讀寫 1355.3.2 讀寫HBase數據 137 5.4 綜合實例 1415.4.1 求TOP值 1415.4.2 文件排序 1435.4.3 二次排序 144 5.5 本章小結 146 實驗4 RDD編程初級實踐 146一、實驗目的 146二、實驗平臺 146三、實驗內容和要求 146四、實驗報告 148第6章 Spark SQL 149 6.1 Spark SQL簡介 1506.1.1 從Shark說起 1506.1.2 Spark SQL架構 1516.1.3 為什麼推出Spark SQL 152 6.2 DataFrame概述 152 6.3 DataFrame的創建 153 6.4 DataFrame的保存 154 6.5 DataFrame的常用操作 155 6.6 從RDD轉換得到DataFrame 1566.6.1 利用反射機制推斷RDD模式 1576.6.2 使用編程方式定義RDD模式 158 6.7 使用Spark SQL讀寫數據庫 1606.7.1 通過JDBC連接數據庫 1606.7.2 連接Hive讀寫數據 162 6.8 本章小結 166 6.9 習題 166 實驗5 Spark SQL編程初級實踐 167一、實驗目的 167二、實驗平臺 167三、實驗內容和要求 167四、實驗報告 168第7章 Spark Streaming 169 7.1 流計算概述 1707.1.1 靜態數據和流數據 1707.1.2 批量計算和實時計算 1717.1.3 流計算概念 1717.1.4 流計算框架 1727.1.5 流計算處理流程 173 7.2 Spark Streaming 1747.2.1 Spark Streaming設計 1747.2.2 Spark Streaming與Storm的對比 1757.2.3 從“Hadoop+Storm”架構轉向Spark架構 176 7.3 DStream操作概述 1777.3.1 Spark Streaming工作機制 1777.3.2 編寫Spark Streaming程序的基本步驟 1787.3.3 創建StreamingContext對像 178 7.4 基本輸入源 1797.4.1 文件流 1797.4.2 套接字流 1817.4.3 RDD隊列流 186 7.5 高級數據源 1877.5.1 Kafka簡介 1887.5.2 Kafka準備工作 1887.5.3 Spark準備工作 1897.5.4 編寫Spark Streaming程序使用Kafka數據源 190 7.6 轉換操作 1947.6.1 DStream無狀態轉換操作 1947.6.2 DStream有狀態轉換操作 195 7.7 輸出操作 1997.7.1 把DStream輸出到文本文件中 1997.7.2 把DStream寫入到關繫數據庫中 200 7.8 本章小結 202 7.9 習題 202實驗6 Spark Streaming編程初級實踐 203一、實驗目的 203二、實驗平臺 203三、實驗內容和要求 203四、實驗報告 204第8章 Spark MLlib 205 8.1 基於大數據的機器學習 206 8.2 機器學習庫MLlib概述 207 8.3 基本數據類型 2088.3.1 本地向量 2088.3.2 標注點 2088.3.3 本地矩陣 209 8.4 機器學習流水線 2108.4.1 流水線的概念 2108.4.2 流水線工作過程 211 8.5 特征提取、轉換和選擇 2128.5.1 特征提取 2138.5.2 特征轉換 2158.5.3 特征選擇 2208.5.4 局部敏感哈希 221 8.6 分類算法 2228.6.1 邏輯斯蒂回歸分類器 2228.6.2 決策樹分類器 226 8.7 聚類算法 2298.7.1 K-Means聚類算法 2308.7.2 GMM聚類算法 232 8.8 協同過濾算法 2348.8.1 推薦算法的原理 2358.8.2 ALS算法 235 8.9 模型選擇和超參數調整 2398.9.1 模型選擇工具 2398.9.2 用交叉驗證選擇模型 240 8.10 本章小結 242 8.11 習題 242實驗7 Spark機器學習庫MLlib編程實踐 243一、實驗目的 243二、實驗平臺 243三、實驗內容和要求 243四、實驗報告 244參考文獻 245
內容簡介
本書以Scala作為開發Spark應用程序的編程語言,繫統介紹了Spark編程的基礎知識。全書共8章,內容包括大數據技術概述、Scala語言基礎、Spark的設計與運行原理、Spark環境搭建和使用方法、RDD編程、Spark SQL、Spark Streaming、Spark MLlib等。