定 價(jià):¥118.00
作 者: | 喬納森·里烏,殷海英 |
出版社: | 清華大學(xué)出版社 |
叢編項(xiàng): | |
標(biāo) 簽: | 暫缺 |
ISBN: | 9787302645368 | 出版時(shí)間: | 2023-10-01 | 包裝: | 平裝-膠訂 |
開本: | 16開 | 頁(yè)數(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編寫的第一個(gè)數(shù)據(jù)處理程序 17
2.1 設(shè)置pyspark shell 18
2.1.1 SparkSession入口點(diǎn) 20
2.1.2 配置PySpark的日志級(jí)別 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 簡(jiǎn)單的列轉(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)點(diǎn)符號(hào) 36
2.5 篩選記錄 38
2.6 本章小結(jié) 40
2.7 擴(kuò)展練習(xí) 40
第3章 提交并擴(kuò)展你的第一個(gè)PySpark程序 43
3.1 對(duì)記錄進(jìn)行分組:計(jì)算詞頻 43
3.2 使用orderBy對(duì)結(jié)果排序 46
3.3 保存數(shù)據(jù)幀中的數(shù)據(jù) 48
3.4 整合所有內(nèi)容:計(jì)數(shù) 49
3.4.1 使用PySpark的導(dǎo)入約定簡(jiǎn)化依賴 50
3.4.2 通過方法鏈簡(jiǎn)化程序 51
3.5 使用spark-submit以批處理模式啟動(dòng)程序 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中讀取和評(píng)估帶分隔符的數(shù)據(jù) 63
4.3.1 第一次使用專門處理CSV文件的SparkReader 63
4.3.2 自定義SparkReader對(duì)象來讀取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ù)幀:對(duì)列進(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 一個(gè)簡(jiǎn)單的分組藍(lán)圖 95
5.2.2 對(duì)自定義列使用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)級(jí):將你的想法轉(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)有多個(gè)值時(shí):使用數(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章 雙語(yǔ)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的語(yǔ)法 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語(yǔ)法的快速總結(jié) 157
7.5 簡(jiǎn)化代碼:混合SQL和Python 157
7.5.1 使用Python提高彈性并簡(jiǎn)化數(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 這一切都從簡(jiǎn)單的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 冷啟動(dòng)=Series UDF的迭代器 190
9.2 分組數(shù)據(jù)上的UDF:聚合
與應(yīng)用 193
9.2.1 分組聚合UDF 194
9.2.2 分組映射UDF 196
9.3 何時(shí)用,怎么用 198
9.4 本章小結(jié) 200
9.5 擴(kuò)展練習(xí) 200
第10章 不同視角下的數(shù)據(jù):窗口函數(shù) 203
10.1 學(xué)習(xí)并使用簡(jiǎn)單的窗口函數(shù) 204
10.1.1 確定每年最冷的一天 204
10.1.2 創(chuàng)建并使用一個(gè)簡(jiǎn)單的窗口函數(shù)來獲取最冷的日子 206
10.1.3 比較兩種方法 210
10.2 除了匯總:使用排名和分析功能 211
10.2.1 排名函數(shù):看看誰(shuí)是第一 212
10.2.2 分析函數(shù):回顧過去和展望未來 216
10.3 彈性窗口!使用行和范圍的邊界 218
10.3.1 計(jì)數(shù),窗口樣式:靜態(tài)、增長(zhǎng)和無(wú)邊界 219
10.3.2 范圍和行 221
10.4 綜合實(shí)踐:在窗口中使用UDF 224
10.5 查看窗口:成功的窗口函數(shù)的主要步驟 226
10.6 本章小結(jié) 226
10.7 擴(kuò)展練習(xí) 226
第11章 加速PySpark:理解Spark的查詢計(jì)劃 229
11.1 芝麻開門:通過Spark UI了解Spark環(huán)境 229
11.1.1 查看配置:Environment選項(xiàng)卡 231
11.1.2 Executors選項(xiàng)卡和resource management選項(xiàng)卡 233
11.1.3 了解任務(wù)的運(yùn)行:通過Spark UI判斷任務(wù)是否完成 237
11.1.4 通過Spark查詢計(jì)劃映射操作:SQL選項(xiàng)卡 240
11.1.5 Spark的核心:解析、分析、優(yōu)化和物理計(jì)劃 242
11.2 關(guān)于性能:操作和內(nèi)存 246
11.2.1 寬操作與窄操作 246
11.2.2 緩存數(shù)據(jù)幀:功能強(qiáng)大,但往往致命(對(duì)于性能而言) 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()對(duì)列名進(jìn)行標(biāo)準(zhǔn)化 261
12.1.2 探索數(shù)據(jù)并獲取第一個(gè)特征列 262
12.1.3 解決數(shù)據(jù)錯(cuò)誤并構(gòu)建第一個(gè)特征集 264
12.1.4 刪除無(wú)用記錄并估算二分類特征 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)換器和估計(jì)器的特征準(zhǔn)備 276
12.3.1 使用Imputer估計(jì)器填充連續(xù)特征 277
12.3.2 使用MinMaxScaler估計(jì)器對(duì)特征進(jìn)行縮放 279
12.4 本章小結(jié) 281
第13章 通過機(jī)器學(xué)習(xí)管道增強(qiáng)機(jī)器學(xué)習(xí) 283
13.1 轉(zhuǎn)換器和估計(jì)器: Spark
中機(jī)器學(xué)習(xí)的構(gòu)建塊 284
13.1.1 數(shù)據(jù)進(jìn)出:轉(zhuǎn)換器 285
13.1.2 估計(jì)器 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 評(píng)估和優(yōu)化模型 297
13.3.1 評(píng)估模型準(zhǔn)確率:混淆矩陣和評(píng)估器對(duì)象 298
13.3.2 真陽(yáng)性與假陽(yáng)性:ROC曲線 300
13.3.3 使用交叉驗(yàn)證優(yōu)化超參數(shù) 302
13.4 從模型中獲取最大的驅(qū)動(dòng)力:提取系數(shù) 305
13.5 本章小結(jié) 307
第14章 構(gòu)建自定義機(jī)器學(xué)習(xí)轉(zhuǎn)換器和估計(jì)器 309
14.1 創(chuàng)建自己的轉(zhuǎn)換器 309
14.1.1 設(shè)計(jì)轉(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)建自己的估計(jì)器 321
14.2.1 設(shè)計(jì)估計(jì)器:從模型到Param 321
14.2.2 實(shí)現(xiàn)伴生模型:創(chuàng)建自己的Mixin 324
14.2.3 創(chuàng)建ExtremeValueCapper估計(jì)器 326
14.2.4 使用自定義估計(jì)器 328
14.3 在機(jī)器學(xué)習(xí)管道中使用轉(zhuǎn)換器和估計(jì)器 328
14.3.1 處理多個(gè)輸入 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