-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
10/8 新書到! 10/1 新書到! 9/24 新書到! 9/18 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

深入大型數據集:并行與分布化Python代碼

( 簡體 字)
作者:張若飛類別:1. -> 程式設計 -> Python
譯者:
出版社:電子工業出版社深入大型數據集:并行與分布化Python代碼 3dWoo書號: 54022
詢問書籍請說出此書號!

有庫存
NT售價: 495

出版日:1/1/2021
頁數:320
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121403682
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

譯者序
在經歷了二十余年互聯網和移動互聯網的發展之后,我們已經生活在一個大數據日益盛行的時代。數據早已不再是一臺計算機、服務器可以存儲下的,而需要成百上千臺機器才能完成存儲工作。數據規模也已經從以前的MB、GB級別,跨越到了TB、PB級別。并行化和分布式編程技能對開發人員的日常工作變得越來越重要,越來越多的開發人員正面臨著因數據集太大而導致的問題。無論是社交、電商、短視頻等如今日益流行的領域,還是人們的日常生活,都已經讓我們越來越認識到大數據的價值。
在大數據的生態發展過程中,涌現了大量的新技術和框架,包括我們較為熟悉的Hadoop、Hive、Spark等,以及在大數據基礎上再次發展起來的AI技術。應該說,這10年的技術發展浪潮都起源于我們可以開始處理以前無法想象的數據量。但是,無論新技術如何發展,底層的核心思想依然沒有發生變化,那就是map和reduce的編程范式。如今以Hadoop為基石建立起來的大數據體系,正是map和reduce編程范式的體現。本書并沒有介紹太多花哨的技術和框架,反而花費了大量篇幅講解底層的map和reduce思想,再一步步拓展到如何用Python實現單機程序,如何用Hadoop、Spark等框架實現分布式計算,以及如何在云上的計算集群中處理更大規模的數據。這樣的思路讓人有“撥開迷霧,返璞歸真”之感。
本書適合有一定Python編程基礎,且希望掌握大型數據集處理能力的開發人員和數據科學家閱讀。
感謝家人、朋友、同事一直以來對我的鼓勵和支持。本譯著難免會存在一些紕漏,懇請讀者諒解并指出。

前言
我是在 2018 年夏天想到寫這本書的。當時我和一些才華橫溢的開發人員一起工作,他們在職業生涯的大部分時間里都沒有學習過如何編寫可伸縮的代碼。我意識到,很多 “大數據”的技術,或者我們在本書中稱為 “大數據集”問題的技術,都是專門為那些想要解決這些問題的人準備的。因為企業中存在很多這樣的問題,而且在這種規模下產生數據的機制已經相對成熟,所以關于這個主題的書籍往往是用作為工具的企業語言(比如 Java 語言)編寫的。
這本書有一些不同。我注意到越來越多的大數據集問題正在通過分布式的方式處理。這里的分布式不是指分布式計算——當然也不是指員工會分散在各地來完成這些工作。個人開發者或者小型開發團隊,通常在快速的原型環境中,或者使用快速開發語言(比如 Python)來處理大數據集。
我希望這本書能夠將可伸縮和分布式編程技術帶給更廣泛的開發人員。我們生活在一個大數據日益盛行的時代。并行化和分布式編程技能對開發人員的日常工作變得越來越重要。越來越多的程序員正面臨由于數據集太大而導致的問題。我希望通過這本書,開發人員能夠掌握解決這些大數據問題的工具,并將重點放在那些讓他們首先對編程感興趣的問題上。
誰應該閱讀本書
本書的目標是向讀者傳授一種可伸縮的編程風格。為了做到這一點,我們將涉及一些你可能不熟悉的編程或技術書籍。其他書籍可能只會介紹某一個函數庫,而本書則會涉及許多函數庫——既有內置的模塊,比如 functools 和 itertools,也有第三方庫,比如 toolz、pathos 和 mrjob。其他的書籍可能只會涉及某一項技術,而這本書會涉及很多技術,包括 Hadoop、Spark 和 Amazon Web Services (AWS)。我們選擇覆蓋更廣泛的技術是為了承認這樣一個事實 :為了讓代碼具有可伸縮性,你需要能夠適應新的情況。然而,在所有這些技術中,我會強調 Python 中一種 “map和reduce”的編程風格。
你會發現,在不斷變化的環境中,這種代碼風格能夠保持始終如一,這也是我最初采用它的原因。你可以使用它來快速調整代碼以適應新的情況。最終,本書的目的是教你如何通過映射和歸約的風格來擴展代碼。在這個過程中,我還打算教你使用一些大數據的工具,比如 Spark、Hadoop 和 AWS。
這本書是為開發人員或者數據科學家所編寫的,因為他們知道自己正面臨數據量太大的問題。如果你知道如何解決自己的問題,但卻不能足夠快地處理大規模的數據,那么本書就是為你準備的。如果你對Hadoop和Spark感興趣,本書會很適合你。
如果你正在尋找一些關于如何將在云端處理大數據的方法,那么本書可能會幫到你。
本書是如何組織的:路線圖
在第 1 章中,我將介紹 map 和 reduce 的編程風格,以及我將在本書中討論的內容。我將討論并行編程的好處、分布式計算的基礎知識、用于并行和分布式計算的工具以及云計算。我還為在本書中所涉及的材料提供了一個概念模型。
在第 2 章中,我將介紹 map 和 reduce 風格中的 map 部分,并討論如何并行化一個問題,以便更快地解決它。我將介紹 Python 的對象持久化過程,即 Python 如何在并行化期間共享數據,以及我們將通過一個示例來演示如何使用并行化來加速Web 抓取。
在第 3 章中,我們將使用 map 函數來執行復雜的數據轉換。在本章中,我將教你如何將小的功能拼接到一起,形成函數管道或者函數鏈,從而產生巨大的效果。我還將演示如何并行化這些函數鏈,以便在大數據集上更快地解決問題。
在第 4 章中,我將介紹惰性(laziness)的概念,以及如何利用惰性來加速大數據工作流的處理速度。我將展示如何用惰性函數在本地來處理大數據集問題,如何創建自己的惰性函數,以及如何最佳地結合使用惰性和非惰性的編程方式。我們將使用這些惰性方法來解決一個模擬問題。
在第 5 章中,我將討論如何使用 reduce 函數進行累加轉換。我還會教你如何使用匿名或者 lambda 函數。在本章中,我們將使用 reduce 函數來計算大數據集的匯總統計信息。
在第 6 章中,我將介紹使用 map 和 reduce 的高級并行化技術。你將學習 Python中用于并行化的高級函數,以及如何、何時尋求問題的并行解決方案。在本章中,你還將學習如何實現并行的 reduce 工作流。
在第 7 章,我將介紹分布式計算的基礎以及 Hadoop 和 Spark 等技術。你將使用 Hadoop 和 Spark 來編寫一個入門程序,并了解每種框架的優點。我們還將討論Hadoop 優于 Spark 和 Spark 優于 Hadoop 的情況。
在第 8 章中,我將介紹如何使用 Hadoop 在分布式集群上流式運行 map 和 reduce 風格的代碼。我還將介紹一個用 Python 來編寫 Hadoop 作業的 mrjob 庫。我們將介紹如何在 Hadoop 的多個作業步驟之間移動復雜的數據類型。我們將通過分析 Web 流量數據和網球比賽日志的示例來鞏固對這些原則的理解。
在第 9 章中,我們將深入討論如何使用 Spark 來讓 Python 代碼分布式化。我將介紹 Spark 的 RDD 數據結構,以及如何使用 RDD 的方法來實現 map 和 reduce 的編程風格。我們還將對第 8 章中的網球比賽日志數據實現經典的 PageRank 算法。
在第 10 章中,我們將討論 Spark 最流行的應用之一:并行機器學習。在本章中,我們將介紹機器學習的一些基礎知識。我們將通過實現決策樹和決策森林來實踐這些原則,從而預測一堆蘑菇是否有毒。
在第 11 章中,我將介紹云計算的基礎知識和云存儲的本質。我們將通過使用Web GUI 和基于 Python 的 AWS API 包裝庫——boto3,將數據加載到 Amazon S3,從而將我們的學習付諸實踐。
在第 12 章中,我們將使用 Amazon ElasticMapReduce 在云中運行分布式的Hadoop 和 Spark 作業。你將了解如何使用 mrjob 從控制臺和基于 AWS 瀏覽器的GUI 來搭建一個彈性的 Hadoop 集群。一旦你掌握了本章的知識內容,就可以處理任何大小的數據集。
內容簡介:

本書共分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編程基礎,且希望掌握大型數據集處理能力的開發人員和數據科學家閱讀。
目錄:

第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函數進行N-X的轉換
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 實例類型
總結
序: