據(jù)估計(jì),2013年全世界產(chǎn)生了大約4.4ZB(詞頭Z代表1021)信息量的數(shù)據(jù)!而到2020年,預(yù)計(jì)人類將會產(chǎn)生10倍于2013年的數(shù)據(jù)量。隨著字面上的數(shù)字越來越大,加上人們需求的日益增長,為了使這些數(shù)據(jù)更有意義,2004年來自Google的Jeffrey Dean和Sanjay Ghemawat發(fā)表了一篇開創(chuàng)性的論文《MapReduce:Simplified Data Processing on Large Clusters》。至此,利用這一概念的技術(shù)開始快速增多,Apache Hadoop也開始迅速變得流行起來,最終創(chuàng)建了一個(gè)Hadoop的生態(tài)系統(tǒng),包括抽象層的Pig、Hive和Mahout,都是利用了map和reduce的簡單概念。
然而,即使擁有每天都分析過濾海量數(shù)據(jù)的能力,MapReduce始終是一個(gè)限制相當(dāng)嚴(yán)格的編程框架。此外,大多數(shù)的任務(wù)還要求讀取、寫入磁盤。認(rèn)識到這些缺點(diǎn),2009年Matei Zaharia將Spark作為他博士課題的一部分開始研究。Spark在2012年首次發(fā)布。雖然Spark是基于和MapReduce相同的概念,但其先進(jìn)的數(shù)據(jù)處理方法和任務(wù)組織方式使得它比Hadhoop要快100倍(對于內(nèi)存計(jì)算)。
在這本書中,我們將指導(dǎo)你使用Python了解Apache Spark的最新性能,包括如何看懂結(jié)構(gòu)化和非結(jié)構(gòu)化的數(shù)據(jù),如何使用PySpark中一些基本的可用數(shù)據(jù)類型,生成機(jī)器學(xué)習(xí)模型,圖像操作,閱讀串流數(shù)據(jù),在云上部署模型。每一章力求解決不同的問題,并且我們也希望看完這本書之后,你可以掌握足夠的知識來解決其他我們還沒來得及在書中講解的問題。
本書的主要內(nèi)容第1章通過技術(shù)和作業(yè)的組織等概念提供了對Spark的介紹。
第2章介紹了RDD、基本原理、PySpark中可用的非模式化數(shù)據(jù)結(jié)構(gòu)。
第3章詳細(xì)介紹了DataFrame數(shù)據(jù)結(jié)構(gòu),它可以彌合Scala和Python之間在效率方面的差距。
第4章引導(dǎo)讀者了解Spark環(huán)境中的數(shù)據(jù)清理和轉(zhuǎn)換的過程。
第5章介紹了適用于RDD的機(jī)器學(xué)習(xí)庫,并回顧了最有用的機(jī)器學(xué)習(xí)模型。
第6章涵蓋了當(dāng)前主流的機(jī)器學(xué)習(xí)庫,并且提供了目前可用的所有模型的概述。
第7章引導(dǎo)你了解能輕松利用圖解決問題的新結(jié)構(gòu)。
第8章介紹了Spark和張量流(TensorFlow)領(lǐng)域中深度學(xué)習(xí)(Deep Learning)的連接橋梁。
第9章描述Blaze是如何跟Spark搭配使用以更容易地對多源數(shù)據(jù)進(jìn)行抽象化的。
第10章介紹了PySpark中可用的流工具。
第11章一步步地指導(dǎo)你運(yùn)用命令行界面完成代碼模塊化并提交到Spark執(zhí)行。
本書中我們隨意使用了Anaconda的預(yù)裝版Python模塊。GraphFrames和TensorFrames也可以在啟動(dòng)Spark實(shí)例時(shí)動(dòng)態(tài)加載:載入時(shí)你的電腦需要聯(lián)網(wǎng)。如果有的模塊尚未安裝到你的電腦里,也沒有關(guān)系,我們會指導(dǎo)你完成安裝過程。
本書的讀者對象想要學(xué)習(xí)大數(shù)據(jù)領(lǐng)域發(fā)展最迅速的技術(shù)即Apache Spark的每一個(gè)人,都可以閱讀此書。我們甚至希望還有來自于數(shù)據(jù)科學(xué)領(lǐng)域更高級的從業(yè)人員,能夠找到一些令人耳目一新的例子以及更有趣的主題。
本書約定警告或重要的筆記提示和技巧下載代碼示例你可以從http://www.packtpub.com下載代碼文件。你也可以訪問華章圖書官網(wǎng)通過注冊并登錄個(gè)人賬號,下載本書的源代碼。
下載本書彩圖我們還提供了一個(gè)PDF文件,其中包含本書中使用的截圖和彩圖,可以幫助讀者更好地了解輸出的變化。