Spark快速大數據分析 第2版 Learning Spark: Lightning-Fast Data Analytics

Damji, Jules S., Wenig, Brooke, Das, Tathagata

  • Spark快速大數據分析 第2版-preview-1
  • Spark快速大數據分析 第2版-preview-2
Spark快速大數據分析 第2版-preview-1

相關主題

商品描述

本書的主角是在大數據時代應運而生的數據處理與分析利器——Spark。你將通過豐富的示例學習如何使用Spark的結構化數據API,利用Spark SQL進行交互式查詢,掌握Spark應用的優化之道,用Spark和Delta Lake等開源工具構建可靠的數據湖,並用MLlib庫實現機器學習流水線。隨著Spark從2.x版本升級到3.0版本,本書第2版做了全面的更新,以體現Spark生態系統在機器學習、流處理技術等方面的發展,另新增一章詳解Spark 3.0引入的新特性。

作者簡介

【作者簡介】
朱爾斯·S 達米吉(Jules S. Damji)是 Databricks 的高級開發人員,也是 MLflow 的貢獻者。
布魯克·韋尼希(Brooke Wenig)是Databricks的機器學習專家。
泰瑟加塔·達斯(Tathagata Das)是Databricks的軟件工程師,也是Apache Spark PMC成員。
丹尼·李(Denny Lee)是 Databricks 的軟件工程師。


【譯者簡介】
王道遠
目前就職於阿里雲開源大數據平台數據存儲團隊,花名“健身湖”,主要負責數據湖架構下的優化工作。有多年的大數據經驗開發,了解Spark源碼,從2014年開始參與Spark項目 ,曾為Spark貢獻大量修復和新特性,也曾作為主要貢獻者參與了OAP和SparkCube等Spark生態文獻項目的開發。

目錄大綱

譯者序十三
對本書的讚譽xv
序 .xvii
前言 xix
第 1 章 Apache Spark 簡介: 添加劑分析引擎 1
1.1 Spark的起源1
1.1.1 谷歌的大數據和微計算 1
1.1.2 雅虎的Hadoop 2
1.1.3 Spark在AMPLab新生露頭角3
1.2 什麼是Spar 3
1.2.1 快速 4
1.2.2 易用 4
1.2.3
1.2.4 可擴展 5
1.3·損害數據分析 5
1.3.1 由Spark組件構成的標記軟件棧 6
1.3.2 Spark的使用執行 9
1.4 開發者體驗 12
1.4.1哪些人用Spark,用它做事13
1.4.2 社區接受度與社區發展 14
第2章 下載並開始使用Apache Spark 16
2.1 第 1 步:下載Spark 16
2.2 第 2 步:使用Scala shell 或PySpark shell 18
2.3 第3步:理解Spark應用的相關概念 22
2.3.1 Spark應用與SparkSession 22
2.3.2 Spark作業23
2.3.3 Spark 執行階段 23
2.3.4 星火任務24
2.4 轉化操作、行動操作以及潛在的求值 24
2.5 Spark UI 26
2.6 第一個獨立應用程序 29
2.6.1 統計M&M巧克力豆29
2.6.2 用Scala構建獨立應用 34
2.7 小結 36
第3章 Apache Spark的結構化數據API 37
3.1 RDD的背後是什麼 37
3.2 Spark 支持結構化數據 38
3.3 數據幀API 41
3.3.1 Spark 的基本數據類型 41
3.3.2 Spark 中結構化的複雜數據類型 42
3.3.3 表結構與DataFrame 43
3.3.4 列與表達式47
3.3.5 行 49
3.3.6 常見的DataFrame操作50
3.3.7 完整的DataFrame示例59
3.4 數據集API 60
3.4.1 有類型對象、無類型對象,以及普通行 61
3.4.2 創建數據集62
3.4.3 數據集操作63
3.4.4 完整的數據集示例 65
3.5 對比DataFrame和Dataset 65
3.6Spark SQL及其周邊引擎 66
3.7 小結 71
第4章 Spark SQL與DataFrame:內建數據源概覽73
4.1 在Spark應用中使用Spark SQL 74
4.2 SQL 表和視圖 79
4.2.1 有管理表和無管理表79
4.2.2 創建SQL數據庫和SQL表79
4.2.3 創建視圖 80
4.2.4 查看元數據 82
4.2.5 緩存SQL 表82
4.2.6 將表讀取為DataFrame 82
4.3 DataFrame 和SQL表的數據源 83
4.3.1 DataFrameReader 83
4.3.2 DataFrameWriter 85
4.3.3 實木複合地板 86
4.3.4 JSON 88
4.3.5 CSV 90
4.3.6 阿夫羅92
4.3.7 ORC 94
4.3.8 圖像 96
4.3.9 二進製文件 97
4.4 小結 98
第5章Spark SQL與DataFrame:讀寫外部數據源100
5.1 Spark SQL 與Apache Hive 100
5.2 用Spark SQL shell、Beeline和Tableau查詢106
5.2.1 使用Spark SQL shell 106
5.2.2 使用Beeline 107
5.2.3 使用Tableau 108
5.3、外部數據源 114
5.3.1 JDBC 和SQL 數據庫 114
5.3.2 PostgreSQL 115
5.3.3 MySQL 117
5.3.4 Azure Cosmos DB 118
5.3.5 MS SQL Server 120
5.3.6、其他外部數據源 121
5.4 DataFrame和Spark SQL的高階函數121
5.4.1 方式1:打散再重組121
5.4.2 方式2:用戶自定義函數 122
5.4.3,針對複雜數據類型的內建函數 122
5.4.4 高階函數 124
5.5常用的DataFrame操作和Spark SQL操作127
5.5.1 聯合 130
5.5.2 連接130
5.5.3 畫面 131
5.5.4 修改 134
5.6 小結 137
第6章Spark SQL與數據集138
6.1 Java與Scala消耗一個API 138
6.2 操作數據集140
6.2.1 創建示例數據 141
6.2.2 轉化譯文數據 142
6.3 數據集與DataFrame的內存管理 147
6.4 數據集編碼器 147
6.4.1 Spark 內部格式與Java對象格式 148
6.4.2序列化與反序列化148
6.5 使用Dataset 的費用 149
6.6 小結151
第7章Spark應用的優化與調優152
7.1 為效率而優化與調優152
7.1.1 查看與設置Spark配置152
7.1.2 為大型作業擴展Spark 155
7.2 數據的緩存與持久化 160
7.2.1 DataFrame.cache() 161
7.2.2 DataFrame.persist() 162
7.2.3 什麼時候應該考慮和持久化 164
7.2.4 什麼時候不應該緩存和持久化 164
7.3 Spark的各種連接算法164
7.3.1 廣播連接165
7.3.2混洗排序合併連接166
7.4 查看Spark UI 173
7.5 小結180
第8章結構化流處理181
8.1 火花流處理髮動機的演進過程181
8.1.1,以少量批量模擬的流處理 182
8.1.2 從DStream 獲取的經驗教訓183
8.1.3 Structured Streaming的設計哲學183
8.2 Structured Streaming 的編程模型 184
8.3 結構化流媒體查詢 186
8.1 五步定義反射查詢 186
8.3.2 啟明的反射查詢 191
8.3.失敗恢復與“合理一次” 192
8.3.4 監控監控的查詢 194
8.4 數據源與數據池 196
8.4.1 文件 197
8.4.2 卡夫卡199
8.4.3 自定義流數據源與數據池 200
8.5 數據轉化204
8.5.1 增量執行與流處理狀態 204
8.5.2 無狀態轉化操作204
8.5.3 有狀態轉化操作 205
8.6 有狀態的風暴聚合207
8.6.1 不根據時間維度進行聚合 207
8.6.2 使用事件時間窗口進行聚合208
8.7 流式連接 214
8.7.1 流與靜態表連接214
8.7.2 流與流連接215
8.8 任意的有狀態計算 220
8.8.1 用mapGroupsWithState() 為任意有狀態操作建模220
8.82.用超時管理不正常的表現223
8.8.3 用flatMapGroupsWithState() 進行通用操作 226
8.9 性能調優227
8.10 小結229
第9章用Apache Spark構建可靠的數據湖230
9.1最佳存儲解決方案的重要特點 230
9.2 數據庫 231
9.2.1 數據庫簡介 231
9.2.2 用Spark讀寫數據庫 232
9.2.3.數據庫的不足 232
9.3 數據湖233
9.3.1 數據湖簡介233
9.3.2 用Spark讀寫數據湖233
9.3.3 數據湖的不足 234
9.4·湖倉整體:共同存儲解決方案 235
9.4.1 阿帕奇胡迪236
9.4.2 阿帕奇冰山 236
9.4.3 三角洲湖236
9.5 用Spark與Delta Lake構建湖倉整體的系統237
9.5.1 為使用Delta Lake配置Spark 237
9.5.2 把數據加載到Delta Lake 表中 238
9.5.3 把數據流加載到Delta Lake 表中 240
9.5.4 寫數據時強化表結構約束以防止數據損壞241
9.5.5 修改表結構以適應數據變化 242
9.5.6 轉化以前數據 242
9.5.7 根據操作歷史審計數據變更 245
9.5.8 用時間旅行功能查詢表以前的快照數據 245
9.6 小結246
第10章機器用MLlib 實現學習247
10.1 什麼是機器學習 247
10.1.1監督學習248
10.1.2 無監督學習 249
10.1.3:為什麼將Spark 用於機器學習 250
1.2 設計機器學習學習0251
10.2.1 接入並探索數據 251
10.2.2 創建訓練集與測試集 252
10.2.3 為轉化器準備特徵 254
10.2.4 理解線性回歸255
10.2.5.用預測器構建模型 25.
1.2.6.創建互聯網257
10.2.7 評估模型262
10.2.8 保存和加載模型 266
10.3 超參數調優266
10.3.1 基於樹的模型267
10.3.2 k 折折驗證 274
1.3.3.優化內燃機277
10.4 小結279
第 11 章用 Apache Spark 管理、開發與成本機器學習 280
11.1 模型管理 280
11.2 用MLlib 創建模型所用的選項 286
11.2.1 287
11.2.2 流處理 289
11.2.3 導出模型用於實時預測的模式 290
11.3 利用Spark 使用非MLlib 模型291
11.3.1 熊貓UDF 291
11.3.2 將Spark用於微超參數調優293
11.4 小結295
第12章 尾聲:Apache Spark 3.0 296
12.1 Spark 內核與Spark SQL 296
12.1.1 動態鼠標296
12.1.2 精確查詢執行 298
12.1.3 SQL連接提示301
12.1.4 目錄插件API 與DataSourceV2 302
1.2.1.5 可探索加速器的調度器303
12.2 結構化流媒體 304
12.3 PySpark、Pandas UDF和Pandas函數API 306
12.3.1 口設計的附帶Python類型提示的Pandas UDF 306
12.3.2Pandas UDF 中的迭代器支持 307
12.3.3 新的Pandas函數API 307
12.4 有改動的功能 308
12.4.1 支持的與不推薦使用的編程語言 309
12.4.2 DataFrame API 和Dataset API 的改動 309
12.4.3 DataFrame與SQL的解釋命令309
12.5 小結 311
作者簡介 313
覆蓋簡介313