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