深入大型數據集:並行與分佈化 Python 代碼 (Mastering Large Datasets: Parallelize and Distribute Your Python Code)

Wolohan, J. T. 譯張若飛

買這商品的人也買了...

商品描述

本書共分3部分,主要介紹如何使用Python語言來處理大型數據集。
第1部分介紹map和reduce編程風格,以及Python中基礎的map和reduce函數,
並介紹如何將對象持久化,通過惰性函數和並行函數來加快大型數據集的處理速度。
第2部分介紹Hadoop和Spark框架,以及如何使用mrjob庫來編寫Hadoop作業,
如何實現PageRank算法,如何使用Spark來實現決策樹和隨機森林的機器學習模型。
第3部分重點介紹雲計算和雲存儲的基礎知識,包括如何通過boto3的Python庫將文件上傳到AWS S3服務,
以及如何在AWS的EMR集群中運行分佈式的Hadoop和Spark作業。
本書適合有一定Python編程基礎,且希望掌握大型數據集處理能力的開發人員和數據科學家閱讀。

作者簡介

JT Wolohan

是Booz Allen Hamilton公司的一名高級人工智能和自然語言處理架構師。
他教過各種層次的學生學習編程:從小學、初中學生到研究生、專業人士。
除對分佈式和並行計算感興趣之外,JT還喜歡跑步、烹飪和與家人共度時光。

 

 

張若飛

曾任多家互聯網金融公司CTO,在宜人貸、雅虎北研、金山雲等知名公司擔任架構師。
十餘年互聯網研發及技術管理經驗,對搭建海量數據、大型分佈式系統有豐富經驗。
著有十餘本技術譯著,包括《Grails權威指南》《給大忙人看的JavaSE 8》《代碼不朽:編寫可維護軟件的十大原則》
《面向可伸縮架構》《雲原生Java》《雲原生模式》等書,總計400餘萬字。

目錄大綱

目錄
第1部分
第1章入門介紹
1.1你將從本書中學到什麼
1.2為什麼是大型數據集
1.3什麼是並行計算
1.3.1理解並行計算
1.3.2擁有map和reduce編程風格的可擴展計算
1.3.3何時應該使用map和reduce編程風格
1.4 map和reduce編程風格
1.4.1用來轉換數據的map函數
1.4.2用於高級轉換的reduce函數
1.4.3用於數據轉譯管道的map和reduce函數
1.5可提升速度和可擴展性的分佈式計算
1.6 Hadoop:一個map和reduce的分佈式框架
1.7提供高性能map、reduce和其他功能的Spark
1.8 AWS Elastic MapReduce―雲上的大型數據集
總結

第2章加速大型數據集處理任務:map函數和並行計算
2.1 map函數簡介
2.1.1通過map函數來獲取URL
2.1.2惰性函數(比如map)對大型數據集的強大功能
2.2並行處理
2.2.1處理器和處理過程
2.2.2並行化和序列化
2. 2.3順序和並行化
2.2.4狀態和並行化
2.3把它們拼在一起:抓取維基百科(Wikipedia)網站
2.3.1可視化我們的圖
2.3.2回到map函數
2.4練習
2.4.1並行化的問題
2.4.2 map函數
2.4.3並行化和速度
2.4 .4存儲序列化
2.4.5 Web抓取數據
2.4.6異構的map轉換
總結

第3章用來映射複雜轉換的函數管道
3.1輔助函數和函數鏈
3.2揭露黑客的通信手段
3.2.1創建輔助函數
3.2.2創建一個管道
3.3 Twitter人口預測
3.3.1推文級別的管道
3.3.2用戶級別的管道
3.3.3應用管道
3.4練習
3.4.1輔助函數和函數管道
3.4.2數學老師的“把戲”
3.4.3愷撒密碼
總結

第4章用惰性工作流來處理大型數據集
4.1什麼是惰性計算
4.2一些你需要知道的惰性函數
4.2.1用filter函數過濾序列
4.2.2用zip函數合併序列
4.2.3用iglob函數進行惰性文件搜索
4.3理解迭代器:Python惰性能力背後的魔法
4.3.1惰性Python的支柱:迭代器
4.3.2生成器:用來創建數據的函數
4.4詩歌謎題:如何惰性處理大型數據集
4.4.1生成這個示例的數據
4.4.2用iglob函數來讀取詩的內容
4.4.3清理詩的正則表達式類
4.4.4計算詩歌內容的比率
4.5惰性模擬:模擬漁村場景
4.5.1創建一個村莊類
4.5.2為我們的漁村場景設計一個模擬類
4.6練習
4.6.1惰性函數
4.6.2 fizz buzz問題生成器
4.6.3重複訪問
4.6.4並行模擬
4.6.5拼字遊戲單詞
總結

第5章使用reduce進行累加操作
5.1使用reduce函數進行NX的轉換
5.2 reduce函數的三個部分
5.2.1 reduce中的累加函數
5.2.2使用lambda函數的簡化累加
5. 2.3 reduce函數中用於啟動複雜行為的初始值
5.3你熟悉的歸約函數
5.3.1使用reduce函數來模擬filter函數
5.3.2使用reduce函數來模擬frequencies函數
5.4同時使用map函數和reduce函數
5.5使用reduce來分析汽車銷售趨勢
5.5.1使用map函數來清洗汽車數據
5.5.2使用reduce來計算汽車銷售的總利潤和總數量
5.5.3對汽車數據應用map和reduce模式
5.6加速map和reduce
5.7練習
5.7.1需要使用reduce的情況
5.7.2 lambda函數
5.7.3最大的數字
5.7.4按長度分組單詞
總結

第6章使用高級並行化來加速map和reduce
6.1充分利用並行map
6.1.1分塊大小以及如何最大化地利用並行map
6.1.2帶有可變序列和分塊大小的並行map運行時
6.1.3更多的並行map:imap和starmap函數
6.2解決並行map和reduce的悖論
6.2.1用來更快進行歸約的並行reduce
6.2.2組合函數以及並行reduce工作流
6.2.3使用fold實現並行求和、filter和frequencies
總結

第2部分
第7章使用Hadoop和Spark處理真正的大型數據集
7.1分佈式計算
7.2用於批處理的Hadoop
7.3使用Hadoop找到高分單詞
7.3.1使用Python和Hadoop Streaming實現MapReduce作業
7.3.2使用Hadoop Streaming對單詞進行評分
7.4用於交互式工作流的Spark
7.4.1用Spark在內存中處理大型數據集
7.4.2結合Python和Spark的PySpark
7.4.3使用Spark SQL進行企業數據分析
7. 4.4用Spark DataFrame來處理列式數據
7.5用Spark來記錄單詞得分
7.5.1搭建Spark環境
7.5.2通過spark-submit來運行MapReduce Spark作業
7.6練習
7.6. 1 Hadoop Streaming腳本
7.6.2 Spark接口
7.6.3 RDD
7.6.4在多個步驟之間傳遞數據
總結

第8章使用Apache Streaming和mrjob處理大數據的最佳實踐
8.1非結構化數據:日誌和文檔
8.2使用Hadoop對網球球員進行分析
8.2.1用來讀取比賽數據的mapper函數
8.2.2計算網球選手等級的reducer函數
8.3通過mrjob工具,以Python的方式來使用Hadoop Streaming
8.3.1一個mrjob作業的Python結構
8.3.2使用mrjob統計錯誤數量
8.4使用mrjob來分析網球比賽
8.4.1按場地類型統計塞雷娜的戰績
8.4.2統計威廉姆斯姐妹之間的長期競爭
8.5練習
8.5.1 Hadoop的數據格式
8.5.2更多的Hadoop數據格式
8.5.3 Hadoop的原生編程語言
8.5.4在MRJob中設計通用的模式
總結

第9章在PySpark中使用map和reduce來實現PageRank算法
9.1近距離了解PySpark
9.1.1 PySpark中類似於map函數的方法
9.1.2 PySpark中類似於reduce函數的方法
9.1.3 PySpark中的簡便方法
9.2在PySpark中使用Elo和PageRank算法對網球選手進行評分
9.2.1使用PySpark重新實現Elo評分
9.2.2介紹PageRank算法
9.2.3用PageRank來計算網球選手的評分
9.3練習
9.3.1 sumByKey
9.3.2用toolz庫來實現sumByKey
9.3.3 Spark和toolz庫
9.3.4維基百科的PageRank算法
總結

第10章使用機器學習和PySpark進行更快的決策
10.1什麼是機器學習
10.1.1機器學習是一種可以自我調節的判斷型算法
10.1.2機器學習的常見應用程序
10.2機器學習基礎與決策樹分類器
10.2.1設計決策樹分類器
10.2.2在PySpark中實現一個決策樹
10.3 PySpark中的快速隨機森林分類
10.3.1理解隨機森林分類器
10.3.2實現一個隨機森林分類器
總結

第3部分
第11章使用Amazon Web Services和S3在雲計算環境中處理大型數據集
11.1 AWS Simple Storage Service―針對大型數據集的解決方案
11.1.1用S3實現無限的存儲
11.1.2雲存儲的可擴展性
11.1.3方便的存儲異構對象
11.1.4用於管理大型數據集的管理服務
11.1.5管理大型數據集的生命週期策略
11.2使用S3在雲中存儲數據
11.2.1通過瀏覽器來存儲S3數據
11.2.2使用Python和boto通過編程方式訪問S3
11.3練習
11.3.1 S3存儲類型
11. 3.2 S3存儲區域
11.3.3對象存儲
總結

第12章使用Amazon的Elastic MapReduce在雲上實現MapReduce
12.1在EMR上通過mrjob來運行Hadoop
12.1.1用EMR方便地創建雲計算集群
12.1.2使用mrjob啟動EMR集群
12.1.3 AWS的EMR瀏覽器界面
12.2在EMR上使用Spark來進行機器學習
12.2.1編寫機器學習模型
12.2.2為Spark搭建一個EMR集群
12.2.3在集群中運行PySpark作業
12.3練習
12.3.1 R系列集群
12.3.2相關聯的Hadoop工作
12.3.3實例類型
總結