定 價:¥118.00
作 者: | 喬納森·里烏,殷海英 |
出版社: | 清華大學(xué)出版社 |
叢編項: | |
標(biāo) 簽: | 暫缺 |
ISBN: | 9787302645368 | 出版時間: | 2023-10-01 | 包裝: | 平裝-膠訂 |
開本: | 16開 | 頁數(shù): | 字?jǐn)?shù): |
第1章 介紹 1
1.1 什么是PySpark 1
1.1.1 從頭開始:什么是Spark 2
1.1.2 PySpark = Spark Python 3
1.1.3 為什么選擇PySpark 3
1.2 PySpark的工作原理 5
1.2.1 使用集群管理器進(jìn)行物理規(guī)劃 6
1.2.2 懶惰的主管成就工廠的高效 8
1.3 你將從本書學(xué)到什么 11
1.4 我們將如何開始 12
1.5 本章小結(jié) 13
第Ⅰ部分 介紹:PySpark的第一步
第2章 使用PySpark編寫的第一個數(shù)據(jù)處理程序 17
2.1 設(shè)置pyspark shell 18
2.1.1 SparkSession入口點 20
2.1.2 配置PySpark的日志級別 21
2.2 映射程序 22
2.3 采集和探索:為數(shù)據(jù)轉(zhuǎn)換奠定基礎(chǔ) 23
2.3.1 用spark.read將數(shù)據(jù)讀入數(shù)據(jù)幀 24
2.3.2 從結(jié)構(gòu)到內(nèi)容:使用show()探索數(shù)據(jù)幀 27
2.4 簡單的列轉(zhuǎn)換:將句子拆解為單詞列表 29
2.4.1 使用select()選擇特定的列 30
2.4.2 轉(zhuǎn)換列:將字符串拆分為單詞列表 31
2.4.3 重命名列:alias和withColumnRenamed 33
2.4.4 重塑數(shù)據(jù):將list分解成行 34
2.4.5 處理單詞:更改大小寫并刪除標(biāo)點符號 36
2.5 篩選記錄 38
2.6 本章小結(jié) 40
2.7 擴(kuò)展練習(xí) 40
第3章 提交并擴(kuò)展你的第一個PySpark程序 43
3.1 對記錄進(jìn)行分組:計算詞頻 43
3.2 使用orderBy對結(jié)果排序 46
3.3 保存數(shù)據(jù)幀中的數(shù)據(jù) 48
3.4 整合所有內(nèi)容:計數(shù) 49
3.4.1 使用PySpark的導(dǎo)入約定簡化依賴 50
3.4.2 通過方法鏈簡化程序 51
3.5 使用spark-submit以批處理模式啟動程序 53
3.6 本章未涉及的內(nèi)容 54
3.7 擴(kuò)展詞頻程序 55
3.8 本章小結(jié) 56
3.9 擴(kuò)展練習(xí) 57
第4章 使用pyspark.sql分析表格數(shù)據(jù) 59
4.1 什么是表格數(shù)據(jù) 60
4.2 使用PySpark分析和處理表格數(shù)據(jù) 62
4.3 在PySpark中讀取和評估帶分隔符的數(shù)據(jù) 63
4.3.1 第一次使用專門處理CSV文件的SparkReader 63
4.3.2 自定義SparkReader對象來讀取CSV數(shù)據(jù)文件 65
4.3.3 探索數(shù)據(jù)世界的輪廓 67
4.4 數(shù)據(jù)操作基礎(chǔ):選擇、刪除、
重命名、排序及診斷 68
4.4.1 了解我們想要什么:選擇列 69
4.4.2 只保留我們想要的:刪除列 71
4.4.3 創(chuàng)建新列:使用withColumn()創(chuàng)建新列 73
4.4.4 整理數(shù)據(jù)幀:對列進(jìn)行重命名和重排序 76
4.4.5 用describe()和summary()分析數(shù)據(jù)幀 78
4.5 本章小結(jié) 80
4.6 擴(kuò)展練習(xí) 80
第5章 數(shù)據(jù)幀操作:連接和分組 83
5.1 連接數(shù)據(jù) 83
5.1.1 探索連接的世界 84
5.1.2 了解連接的兩邊 85
5.1.3 成功連接的規(guī)則:謂詞 85
5.1.4 連接方法 87
5.1.5 連接的命名約定 91
5.2 通過groupby和GroupedData匯總數(shù)據(jù) 94
5.2.1 一個簡單的分組藍(lán)圖 95
5.2.2 對自定義列使用agg() 98
5.3 處理null值:刪除或填充 100
5.3.1 立即刪除:使用dropna()
刪除具有null值的記錄 100
5.3.2 使用fillna()替換null值 101
5.4 問題回顧:端到端程序 102
5.5 本章小結(jié) 105
5.6 擴(kuò)展練習(xí) 105
第Ⅱ部分 進(jìn)級:將你的想法轉(zhuǎn)化為代碼
第6章 多維數(shù)據(jù)幀:使用PySpark處理JSON數(shù)據(jù) 109
6.1 讀取JSON數(shù)據(jù):為schemapocalypse做好準(zhǔn)備 109
6.1.1 從小處開始:將JSON數(shù)據(jù)作為受限的Python字典 111
6.1.2 更進(jìn)一步:在PySpark中讀取JSON數(shù)據(jù) 113
6.2 用復(fù)雜的數(shù)據(jù)類型突破二維數(shù)據(jù) 114
6.2.1 當(dāng)有多個值時:使用數(shù)組 116
6.2.2 映射類型:同一列中的鍵和值 119
6.3 結(jié)構(gòu)體:列中的嵌套列 121
6.4 構(gòu)建和使用數(shù)據(jù)幀模式 125
6.4.1 使用Spark類型作為schema的基本代碼塊 125
6.4.2 使用結(jié)構(gòu)體模式原地讀取JSON文檔 127
6.4.3 循環(huán)往復(fù):以JSON格式指定模式 131
6.5 進(jìn)行整合:使用復(fù)雜數(shù)據(jù)類型減少重復(fù)數(shù)據(jù) 133
6.5.1 獲取“剛剛好”的數(shù)據(jù)幀:explode和collect 135
6.5.2 創(chuàng)建自己的層次結(jié)構(gòu):作為函數(shù)的結(jié)構(gòu)體 138
6.6 本章小結(jié) 139
6.7 擴(kuò)展練習(xí) 139
第7章 雙語PySpark:混合Python和SQL 141
7.1 根據(jù)我們的了解:pyspark.sql 與普通 SQL 142
7.2 為SQL準(zhǔn)備數(shù)據(jù)幀 143
7.2.1 將數(shù)據(jù)幀轉(zhuǎn)換為Spark表 144
7.2.2 使用Spark目錄 145
7.3 SQL和PySpark 146
7.4 在數(shù)據(jù)幀方法中使用類似SQL的語法 148
7.4.1 獲取所需的行和列:select和where 148
7.4.2 將相似的記錄分組在一起:group by和order by 149
7.4.3 在分組后使用having進(jìn)行篩選 150
7.4.4 使用CREATE關(guān)鍵字創(chuàng)建新表/視圖 151
7.4.5 使用UNION和JOIN向表中添加數(shù)據(jù) 153
7.4.6 通過子查詢和公共表表達(dá)式更好地組織SQL代碼 154
7.4.7 PySpark與SQL語法的快速總結(jié) 157
7.5 簡化代碼:混合SQL和Python 157
7.5.1 使用Python提高彈性并簡化數(shù)據(jù)讀取階段 158
7.5.2 在PySpark中使用SQL風(fēng)格的表達(dá)式 159
7.6 結(jié)論 161
7.7 本章小結(jié) 161
7.8 擴(kuò)展練習(xí) 162
第8章 使用Python擴(kuò)展PySpark: RDD和UDF 165
8.1 PySpark中的RDD 166
8.2 使用Python通過UDF擴(kuò)展PySpark 173
8.2.1 這一切都從簡單的Python開始:使用類型化的Python函數(shù) 174
8.2.2 使用udf()將Python函數(shù)轉(zhuǎn)換為UDF 176
8.3 本章小結(jié) 179
8.4 擴(kuò)展練習(xí) 179
第9章 大數(shù)據(jù)就是大量的小數(shù)據(jù):使用pandas UDF 181
9.1 通過pandas進(jìn)行列轉(zhuǎn)換:使用Series UDF 182
9.1.1 將Spark連接到谷歌的BigQuery 183
9.1.2 Series to Series UDF:使用pandas的列函數(shù) 188
9.1.3 標(biāo)量UDF 冷啟動=Series UDF的迭代器 190
9.2 分組數(shù)據(jù)上的UDF:聚合
與應(yīng)用 193
9.2.1 分組聚合UDF 194
9.2.2 分組映射UDF 196
9.3 何時用,怎么用 198
9.4 本章小結(jié) 200
9.5 擴(kuò)展練習(xí) 200
第10章 不同視角下的數(shù)據(jù):窗口函數(shù) 203
10.1 學(xué)習(xí)并使用簡單的窗口函數(shù) 204
10.1.1 確定每年最冷的一天 204
10.1.2 創(chuàng)建并使用一個簡單的窗口函數(shù)來獲取最冷的日子 206
10.1.3 比較兩種方法 210
10.2 除了匯總:使用排名和分析功能 211
10.2.1 排名函數(shù):看看誰是第一 212
10.2.2 分析函數(shù):回顧過去和展望未來 216
10.3 彈性窗口!使用行和范圍的邊界 218
10.3.1 計數(shù),窗口樣式:靜態(tài)、增長和無邊界 219
10.3.2 范圍和行 221
10.4 綜合實踐:在窗口中使用UDF 224
10.5 查看窗口:成功的窗口函數(shù)的主要步驟 226
10.6 本章小結(jié) 226
10.7 擴(kuò)展練習(xí) 226
第11章 加速PySpark:理解Spark的查詢計劃 229
11.1 芝麻開門:通過Spark UI了解Spark環(huán)境 229
11.1.1 查看配置:Environment選項卡 231
11.1.2 Executors選項卡和resource management選項卡 233
11.1.3 了解任務(wù)的運行:通過Spark UI判斷任務(wù)是否完成 237
11.1.4 通過Spark查詢計劃映射操作:SQL選項卡 240
11.1.5 Spark的核心:解析、分析、優(yōu)化和物理計劃 242
11.2 關(guān)于性能:操作和內(nèi)存 246
11.2.1 寬操作與窄操作 246
11.2.2 緩存數(shù)據(jù)幀:功能強(qiáng)大,但往往致命(對于性能而言) 251
11.3 本章小結(jié) 254
第Ⅲ部分 使用PySpark進(jìn)行機(jī)器學(xué)習(xí)
第12章 準(zhǔn)備工作:為機(jī)器學(xué)習(xí)準(zhǔn)備特征 259
12.1 閱讀、探索和準(zhǔn)備機(jī)器學(xué)習(xí)數(shù)據(jù)集 260
12.1.1 使用toDF()對列名進(jìn)行標(biāo)準(zhǔn)化 261
12.1.2 探索數(shù)據(jù)并獲取第一個特征列 262
12.1.3 解決數(shù)據(jù)錯誤并構(gòu)建第一個特征集 264
12.1.4 刪除無用記錄并估算二分類特征 266
12.1.5 處理極值:清洗帶有連續(xù)值的列 268
12.1.6 刪除不常見的二分類列 271
12.2 特征創(chuàng)建和細(xì)化 272
12.2.1 創(chuàng)建自定義特征 272
12.2.2 去除高度相關(guān)的特征 273
12.3 基于轉(zhuǎn)換器和估計器的特征準(zhǔn)備 276
12.3.1 使用Imputer估計器填充連續(xù)特征 277
12.3.2 使用MinMaxScaler估計器對特征進(jìn)行縮放 279
12.4 本章小結(jié) 281
第13章 通過機(jī)器學(xué)習(xí)管道增強(qiáng)機(jī)器學(xué)習(xí) 283
13.1 轉(zhuǎn)換器和估計器: Spark
中機(jī)器學(xué)習(xí)的構(gòu)建塊 284
13.1.1 數(shù)據(jù)進(jìn)出:轉(zhuǎn)換器 285
13.1.2 估計器 289
13.2 構(gòu)建(完整的)機(jī)器學(xué)習(xí)管道 290
13.2.1 使用向量列類型組裝最終數(shù)據(jù)集 292
13.2.2 使用LogisticRegression分類器訓(xùn)練機(jī)器學(xué)習(xí)模型 295
13.3 評估和優(yōu)化模型 297
13.3.1 評估模型準(zhǔn)確率:混淆矩陣和評估器對象 298
13.3.2 真陽性與假陽性:ROC曲線 300
13.3.3 使用交叉驗證優(yōu)化超參數(shù) 302
13.4 從模型中獲取最大的驅(qū)動力:提取系數(shù) 305
13.5 本章小結(jié) 307
第14章 構(gòu)建自定義機(jī)器學(xué)習(xí)轉(zhuǎn)換器和估計器 309
14.1 創(chuàng)建自己的轉(zhuǎn)換器 309
14.1.1 設(shè)計轉(zhuǎn)換器:從Param和轉(zhuǎn)換的角度思考 310
14.1.2 創(chuàng)建轉(zhuǎn)換器的Param 312
14.1.3 getter和setter:成為PySpark中優(yōu)秀的一員 314
14.1.4 創(chuàng)建自定義轉(zhuǎn)換器的初始化函數(shù) 316
14.1.5 創(chuàng)建轉(zhuǎn)換函數(shù) 317
14.1.6 使用轉(zhuǎn)換器 319
14.2 創(chuàng)建自己的估計器 321
14.2.1 設(shè)計估計器:從模型到Param 321
14.2.2 實現(xiàn)伴生模型:創(chuàng)建自己的Mixin 324
14.2.3 創(chuàng)建ExtremeValueCapper估計器 326
14.2.4 使用自定義估計器 328
14.3 在機(jī)器學(xué)習(xí)管道中使用轉(zhuǎn)換器和估計器 328
14.3.1 處理多個輸入 329
14.3.2 將自定義組件應(yīng)用于機(jī)器學(xué)習(xí)管道 331
14.4 本章小結(jié) 334
14.5 結(jié)論:有數(shù)據(jù),我就開心 334
附錄A 習(xí)題答案 337
附錄B 安裝PySpark 369
附錄C 一些有用的Python內(nèi)容 389