Spark編程基礎(Python版)
林子雨
相關主題
商品描述
本書以Python作為開發Spark應用程序的編程語言,系統介紹了Spark編程的基礎知識。全書共8章,內容包括大數據技術概述、Spark的設計與運行原理、Spark環境搭建和使用方法、RDD編程、Spark SQL、Spark Streaming、Structured Streaming、Spark MLlib等。
作者簡介
林子雨,博士(畢業於北京大學),現為廈門大學電腦科學系助理教授,全國高校知名大數據教師,廈門大學數據庫實驗室負責人,榮獲2013年度和2017年度廈門大學獎教金、2018年廈門大學高等教育教學成果特等獎、2018年福建省高等教育教學成果二等獎和2018年國家精品在線開放課程,中國電腦學會數據庫專委會委員,中國電腦學會信息系統專委會委員。曾任廈門大學信息科學與技術學院院長助理、晉江市發展和改革局副局長。主要研究方向為數據庫、數據倉庫、數據挖掘、大數據,並以第一作者身份在《軟件學報》《電腦學報》和《電腦研究與發展》等國家重點期刊以及國際學術會議上發表多篇學術論文。作為項目負責人主持的科研項目包括1項國家自然科學青年基金項目(No.61303004)、1項福建省自然科學青年基金項目(No.2013J05099)和1項中央高校基本科研業務費項目(No.2011121049),主持的教改課題包括1項2016年福建省教改課題和1項2016年教育部產學協作育人項目。編著出版了國內高校第一本系統介紹大數據知識的專業教材《大數據技術原理與應用》,被國內眾多高校採用作為開課教材,並成為京東、當當網等網店暢銷書籍。建設了國內高校首個大數據課程公共服務平臺,為教師教學和學生學習大數據課程提供全方位、一站式服務,成為國內高校大數據教學知名品牌,平臺每年訪問量超過100萬次。
目錄大綱
第1 章 大數據技術概述 1
1.1 大數據概念與關鍵技術 2
1.1.1 大數據的概念 2
1.1.2 大數據關鍵技術 2
1.2 代表性大數據技術 4
1.2.1 Hadoop 4
1.2.2 Spark 8
1.2.3 Flink 10
1.2.4 Beam 11
1.3 編程語言的選擇 12
1.4 在線資源 13
1.5 本章小結 14
1.6 習題 14
實驗1 Linux 系統的安裝和常用命令 15
第2 章 Spark 的設計與運行原理 17
2.1 概述 18
2.2 Spark 生態系統 19
2.3 Spark 運行架構 21
2.3.1 基本概念 21
2.3.2 架構設計 21
2.3.3 Spark 運行基本流程 22
2.3.4 RDD 的設計與運行原理 24
2.4 Spark 的部署方式 33
2.5 本章小結 34
2.6 習題 34
第3 章 Spark 環境搭建和使用方法 35
3.1 安裝Spark 36
3.1.1 基礎環境 36
3.1.2 下載安裝文件 36
3.1.3 配置相關文件 38
3.1.4 驗證Spark 是否安裝成功 39
3.1.5 Spark 和Hadoop 的交互 39
3.2 在pyspark 中運行代碼 40
3.2.1 pyspark 命令 40
3.2.2 啟動pyspark 41
3.3 開發Spark 獨立應用程序 42
3.3.1 編寫程序 42
3.3.2 通過spark-submit 運行程序 43
3.4 Spark 集群環境搭建 44
3.4.1 集群概況 44
3.4.2 搭建Hadoop 集群 44
3.4.3 在集群中安裝Spark 45
3.4.4 配置環境變量 45
3.4.5 Spark 的配置 46
3.4.6 啟動Spark 集群 47
3.4.7 關閉Spark 集群 47
3.5 在集群上運行Spark 應用程序 48
3.5.1 啟動Spark 集群 48
3.5.2 採用獨立集群管理器 48
3.5.3 採用Hadoop YARN 管理器 49
3.6 本章小結 51
3.7 習題 51
實驗2 Spark 和Hadoop 的安裝 51
第4 章 RDD 編程 53
4.1 RDD 編程基礎 54
4.1.1 RDD 創建 54
4.1.2 RDD 操作 56
4.1.3 持久化 63
4.1.4 分區 64
4.1.5 一個綜合實例 69
4.2 鍵值對RDD 71
4.2.1 鍵值對RDD 的創建 71
4.2.2 常用的鍵值對轉換操作 72
4.2.3 一個綜合實例 78
4.3 數據讀寫 79
4.3.1 文件數據讀寫 79
4.3.2 讀寫HBase 數據 82
4.4 綜合實例 86
4.4.1 求TOP 值 86
4.4.2 文件排序 89
4.4.3 二次排序 91
4.5 本章小結 94
4.6 習題 95
實驗3 RDD 編程初級實踐 95
第5 章 Spark SQL 98
5.1 Spark SQL 簡介 99
5.1.1 從Shark 說起 99
5.1.2 Spark SQL 架構 100
5.1.3 為什麽推出Spark SQL 101
5.2 DataFrame 概述 101
5.3 DataFrame 的創建 102
5.4 DataFrame 的保存 103
5.5 DataFrame 的常用操作 104
5.6 從RDD 轉換得到DataFrame 105
5.6.1 利用反射機制推斷RDD 模式 106
5.6.2 使用編程方式定義RDD 模式 107
5.7 使用Spark SQL 讀寫數據庫 108
5.7.1 準備工作 109
5.7.2 讀取MySQL 數據庫中的數據 109
5.7.3 向MySQL 數據庫寫入數據 110
5.8 本章小結 111
5.9 習題 112
實驗4 Spark SQL 編程初級實踐 112
第6 章 Spark Streaming 115
6.1 流計算概述 116
6.1.1 靜態數據和流數據 116
6.1.2 批量計算和實時計算 117
6.1.3 流計算概念 117
6.1.4 流計算框架 118
6.1.5 流計算處理流程 119
6.2 Spark Streaming 121
6.2.1 Spark Streaming 設計 121
6.2.2 Spark Streaming 與Storm 的對比 122
6.2.3 從“Hadoop+Storm”架構轉向Spark 架構 122
6.3 DStream 操作概述 123
6.3.1 Spark Streaming 工作機制 123
6.3.2 編寫Spark Streaming 程序的基本步驟 124
6.3.3 創建StreamingContext 對象 124
6.4 基本輸入源 125
6.4.1 文件流 125
6.4.2 套接字流 127
6.4.3 RDD 隊列流 131
6.5 高級數據源 133
6.5.1 Kafka 簡介 133
6.5.2 Kafka 準備工作 133
6.5.3 Spark 準備工作 135
6.5.4 編寫Spark Streaming 程序使用Kafka 數據源 136
6.6 轉換操作 137
6.6.1 DStream 無狀態轉換操作 137
6.6.2 DStream 有狀態轉換操作 138
6.7 輸出操作 143
6.7.1 把DStream 輸出到文本文件中 143
6.7.2 把DStream 寫入到關系數據庫中 145
6.8 本章小結 147
6.9 習題 147
實驗5 Spark Streaming 編程初級實踐 147
第7 章 Structured Streaming 150
7.1 概述 151
7.1.1 基本概念 151
7.1.2 兩種處理模型 152
7.1.3 Structured Streaming 和Spark SQL、Spark Streaming 的關系 154
7.2 編寫Structured Streaming程序的基本步驟 154
7.2.1 實現步驟 154
7.2.2 測試運行 156
7.3 輸入源 158
7.3.1 File 源 158
7.3.2 Kafka 源 163
7.3.3 Socket 源 167
7.3.4 Rate 源 167
7.4 輸出操作 169
7.4.1 啟動流計算 169
7.4.2 輸出模式 170
7.4.3 輸出接收器 170
7.5 容錯處理 173
7.5.1 從檢查點恢復故障 173
7.5.2 故障恢復中的限制 173
7.6 遲到數據處理 174
7.6.1 事件時間 174
7.6.2 遲到數據 175
7.6.3 水印 176
7.6.4 多水印規則 177
7.6.5 處理遲到數據的實例 178
7.7 查詢的管理和監控 181
7.7.1 管理和監控的方法 181
7.7.2 一個監控的實例 182
7.8 本章小結 184
7.9 習題 185
實驗6 Structured Streaming編程實踐 185
第8章 Spark MLlib 187
8.1 基於大數據的機器學習 188
8.2 機器學習庫MLlib 概述 189
8.3 基本數據類型 190
8.3.1 本地向量 190
8.3.2 標註點 191
8.3.3 本地矩陣 192
8.4 機器學習流水線 193
8.4.1 流水線的概念 193
8.4.2 流水線工作過程 193
8.5 特徵提取、轉換和選擇 195
8.5.1 特徵提取 195
8.5.2 特徵轉換 199
8.5.3 特徵選擇 204
8.5.4 局部敏感哈希 205
8.6 分類算法 205
8.6.1 邏輯斯蒂回歸分類器 206
8.6.2 決策樹分類器 212
8.7 聚類算法 217
8.7.1 K-Means 聚類算法 218
8.7.2 GMM 聚類算法 220
8.8 協同過濾算法 223
8.8.1 推薦算法的原理 223
8.8.2 ALS 算法 224
8.9 模型選擇和超參數調整 228
8.9.1 模型選擇工具 229
8.9.2 用交叉驗證選擇模型 229
8.10 本章小結 232
8.11 習題 233
實驗7 Spark 機器學習庫MLlib編程實踐 233
參考文獻 235