內容簡介
本書是關於大數據和Spark的一個簡明手冊。它將助你學習如何用Spark來完成很多大數據分析任務,其中覆蓋瞭高效利用Spark所需要知道的重要主題:如何使用SparkShell進行交互式數據分析、如何編寫Spark應用、如何在Spark中對大規模數據進行交互分析、如何使用SparkStreaming處理高速數據流、如何使用Spark進行機器學習、如何使用Spark進行圖處理、如何使用集群管理員部署Spark、如何監控Spark應用等。本書還對其他配閤Spark一起使用的大數據技術進行瞭介紹,包括HDFS、Avro、Parquet、Kafka、Cassandra、HBase、Mesos等。本書也對機器學習和圖的概念進行瞭介紹。
目錄
Contents 目 錄
譯者序
前言
緻謝
第1章 大數據技術一覽1
1.1 Hadoop2
1.1.1 HDFS3
1.1.2 MapReduce5
1.1.3 Hive5
1.2 數據序列化6
1.2.1 Avro6
1.2.2 Thrift6
1.2.3 Protocol Buffers7
1.2.4 SequenceFile7
1.3 列存儲7
1.3.1 RCFile8
1.3.2 ORC8
1.3.3 Parquet9
1.4 消息係統9
1.4.1 Kafka10
1.4.2 ZeroMQ11
1.5 NoSQL12
1.5.1 Cassandra13
1.5.2 HBase13
1.6 分布式SQL查詢引擎14
1.6.1 Impala14
1.6.2 Presto14
1.6.3 Apache Drill15
1.7 總結15
第2章 Scala編程16
2.1 函數式編程16
2.1.1 函數17
2.1.2 不可變數據結構18
2.1.3 一切皆錶達式19
2.2 Scala基礎19
2.2.1 起步20
2.2.2 基礎類型20
2.2.3 變量21
2.2.4 函數21
2.2.5 類24
2.2.6 單例24
2.2.7 樣本類25
2.2.8 模式匹配25
2.2.9 操作符26
2.2.10 特質26
2.2.11 元組27
2.2.12 Option類型27
2.2.13 集閤28
2.3 一個單獨的Scala應用程序32
2.4 總結32
第3章 Spark Core33
3.1 概述33
3.1.1 主要特點33
3.1.2 理想的應用程序36
3.2 總體架構37
3.2.1 worker37
3.2.2 集群管理員38
3.2.3 驅動程序38
3.2.4 執行者38
3.2.5 任務38
3.3 應用運行38
3.3.1 術語38
3.3.2 應用運行過程39
3.4 數據源39
3.5 API40
3.5.1 SparkContext40
3.5.2 RDD41
3.5.3 創建RDD42
3.5.4 RDD操作43
3.5.5 保存RDD52
3.6 惰性操作53
3.7 緩存54
3.7.1 RDD的緩存方法55
3.7.2 RDD緩存是可容錯的56
3.7.3 緩存內存管理56
3.8 Spark作業56
3.9 共享變量57
3.9.1 廣播變量57
3.9.2 纍加器58
3.10 總結59
第4章 使用Spark shell進行交互式數據分析60
4.1 起步60
4.1.1 下載60
4.1.2 解壓61
4.1.3 運行61
4.2 REPL命令62
4.3 把Spark shell當成Scala shell使用62
4.4 數值分析63
4.5 日誌分析64
4.6 總結68
第5章 編寫Spark應用69
5.1 Spark中的Hello World69
5.2 編譯並運行應用72
5.2.1 sbt72
5.2.2 編譯代碼73
5.2.3 運行應用73
5.3 監控應用75
5.4 調試應用75
5.5 總結76
第6章 Spark Streaming77
6.1 Spark Streaming簡介78
6.1.1 Spark Streaming是一個Spark類庫78
6.1.2 總體架構78
6.1.3 數據流來源78
6.1.4 接收器79
6.1.5 目的地79
6.2 API79
6.2.1 StreamingContext80
6.2.2 Spark Streaming應用基本結構82
6.2.3 DStream82
6.2.4 創建DStream83
6.2.5 處理數據流84
6.2.6 輸齣操作88
6.2.7 窗口操作91
6.3 一個完整的Spark Streaming應用93
6.4 總結98
第7章 Spark SQL99
7.1 Spark SQL簡介99
7.1.1 和其他Spark庫集成100
7.1.2 可用性100
7.1.3 數據源100
7.1.4 數據處理接口100
7.1.5 與Hive的互操作性101
7.2 性能101
7.2.1 磁盤I/O101
7.2.2 分區102
7.2.3 列存儲102
7.2.4 內存中的列式緩存102
7.2.5 行跳過102
7.2.6 謂詞下推102
7.2.7 查詢優化103
7.3 應用104
7.3.1 ETL104
7.3.2 數據可視化104
7.3.3 分布式JDBC/ODBC SQL查詢引擎105
7.3.4 數據倉庫105
7.4 API106
7.4.1 關鍵抽象106
7.4.2 創建DataFrame109
7.4.3 在程序中使用SQL/HiveQL處理數據114
7.4.4 使用DataFrame API處理數據115
7.4.5 保存DataFrame131
7.5 內置函數133
7.5.1 聚閤操作134
7.5.2 集閤操作134
7.5.3 日期/時間134
7.5.4 數學135
7.5.5 字符串135
7.5.6 窗口135
7.6 UDF和UDAF135
7.7 一個交互式分析的例子135
7.8 使用Spark SQL JDBC服務器進行交互式分析142
7.9 總結145
第8章 使用Spark進行機器學習146
8.1 機器學習簡介146
8.1.1 特徵147
8.1.2 標簽147
8.1.3 模型148
8.1.4 訓練數據148
8.1.5 測試數據149
8.1.6 機器學習應用149
8.1.7 機器學習算法151
8.1.8 超參數160
8.1.9 模型評價160
8.1.10 機器學習的主要步驟162
8.2 Spark機器學習庫162
8.3 MLlib概覽163
8.3.1 與其他Spark庫集成163
8.3.2 統計工具163
8.3.3 機器學習算法163
8.4 MLlib API164
8.4.1 數據類型164
8.4.2 算法和模型166
8.4.3 模型評價181
8.5 MLlib示例應用184
8.5.1 數據集184
8.5.2 目標184
8.5.3 代碼184
8.6 Spark ML186
8.6.1 ML數據集187
8.6.2 Transformer187
8.6.3 Estimator187
8.6.4 Pipeline188
8.6.5 PipelineModel188
8.6.6 Evaluator188
8.6.7 網格搜索189
8.6.8 CrossValidator189
8.7 Spark ML示例應用189
8.7.1 數據集190
8.7.2 目標190
8.7.3 代碼190
8.8 總結195
第9章 使用Spark進行圖處理196
9.1 圖簡介196
9.1.1 無嚮圖197
9.1.2 有嚮圖197
9.1.3 有嚮多邊圖197
9.1.4 屬性圖197
9.2 GraphX簡介198
9.3 GraphX API199
9.3.1 數據抽象199
9.3.2 創建圖200
9.3.3 圖屬性202
9.3.4 圖操作符204
9.4 總結217
第10章 集群管理員218
前言/序言
前言Preface本書是大數據和Spark方麵的一本簡明易懂的手冊。它將助你學習如何用Spark來完成很多大數據分析任務。它覆蓋瞭高效利用Spark所需要知道的一切內容。
購買本書的好處之一就是:幫你高效學習Spark,節省你大量時間。本書所覆蓋的主題在互聯網上都可以找到,網上有很多關於Spark的博客、PPT和視頻。事實上,Spark的資料浩如煙海,你可能需要在網絡上不同地方花費數月來閱讀關於Spark的點滴和碎片知識。本書提供瞭一個更好的選擇:內容組織精妙,並以易懂的形式錶現齣來。
本書的內容和材料的組織基於我在不同的大數據相關會議上所組織的Spark研討會。與會者對於內容和流程方麵的積極反饋激勵我寫瞭這本書。
書和研討會的區彆之一在於後者具有交互性。然而,組織過幾次Spark研討會後,我瞭解到瞭人們普遍存在的問題,我把這些內容也收錄在本書中。如果閱讀本書時有問題,我鼓勵你們通過LinkedIn或Twitter聯係我。任何問題都可以問,不存在什麼“愚蠢的問題”。
本書沒有覆蓋Spark的每一個細節,而是包含瞭高效使用Spark所需要知道的重要主題。我的目標是幫你建立起堅實的基礎。一旦基礎牢固,就可以輕鬆學習一項新技術的所有細節。另外,我希望保持本書盡可能簡單。如果讀完本書後發現Spark看起來也挺簡單的,那我的目的也就達到瞭。
本書中的任何主題都不要求有先驗知識。本書會一步步介紹關鍵概念,每一節建立在前一節的基礎上。同樣,每一章都是下一章的基石。如果當下不需要,你可以略過後麵一些章節中講解的不同的Spark庫。不過我還是鼓勵你閱讀所有章節。即使可能和你當前的項目不相關,那些部分也可能會給你新的靈感。
通過本書你會學到很多Spark及其相關技術的知識。然而,要充分利用本書,建議親自運行書中所展示的例子:用代碼示例做實驗。當你寫代碼並執行時,很多事情就變得更加清晰。如果你一邊閱讀一邊練習並用示例來實驗,當讀完本書時,你將成為一名基礎紮實的Spark開發者。
在我開發Spark應用時,我發現瞭一個有用的資源—Spark官方API文檔,其訪問地址為http://spark.apache.org/docs/latest/api/scala。初學者可能覺得它難以理解,不過一旦你學習瞭基本概念後,會發現它很有用。
另一個有用的資源是Spark郵件列錶。Spark社區很活躍、有用。不僅Spark開發者會迴答問題,有經驗的Spark用戶也會誌願幫助新人。無論你遇到什麼問題,很有可能Spark郵件列錶中有人已經解決過這個問題瞭。
而且,也可以聯係我,我很樂意傾聽,歡迎反饋、建議和提問。
—MohammedGullerLinkedIn:www.linkedin.com/in/mohammedgullerTwitter:@MohammedGuller緻謝Acknowledgements許多人都直接地或間接地為本書作齣瞭貢獻。如果沒有他們的支持、鼓勵與幫助,我是無法完成本書的編寫的。我想藉此機會嚮他們錶示感謝。
首先,也是最重要的,我想要感謝我的妻子Tarannum和我的三個可愛的孩子Sarah、Soha、Sohail。寫書是一項艱巨的任務。在從事全職工作的同時寫書意味著我無法花費太多的時間在我的傢人身上。上班時間我忙於工作,晚上和周末我則全身投入到本書的寫作上。我對我傢人給予的全方位的支持和鼓勵錶示感謝。有時候,Soha和Sohail會提齣一些有意思的想法讓我陪他們一起玩,但是在大部分時候,他們還是讓我在本應該陪他們玩耍的時候專注於寫書。
接下來,感謝MateiZaharia、ReynoldXin、MichaelArmbrust、TathagataDas、PatrickWendell、JosephBradley、XiangruiMeng、JosephGonzalez、AnkurDave以及其他Spark開發者。他們不僅創造齣瞭一項卓越的技術,還持續快速改進它。沒有他們的發明,本書將不會存在。
當我在Glassbeam公司提議使用Spark來解決當時睏擾我們的一些問題時,Spark還是一項新技術且少有人瞭解。我想要感謝工程副總裁AshokAgarwal和首席執行官PuneetPandit允許我使用Spark。如果沒有來自將Spark內置於産品中和日常使用的一手經驗,要寫齣一本有關Spark的書是相當睏難的。
接下來,我想感謝技術審校者SundarRajanRaman和HepingLiu。他們認真檢查瞭本書內容的準確性並運行瞭書中的例子以確保它們能正常運行,還提齣瞭不少有幫助的建議。
最後,我想感謝Apress參與本書齣版的工作人員ChrisNelson、JillBalzano、KimBur-ton-Weisman、CelestinJohnSuresh、NikhilChinnari、DhaneeshKumar等。JillBalzano協調瞭與本書齣版相關的所有工作。作為一個編輯,ChrisNelson為本書作齣瞭卓越的貢獻。我十分感謝他的建議與編輯,有瞭他的參與,本書變得更完美瞭。文字編輯KimBurton-Weisman認真閱讀瞭本書的每一句話以保證書寫正確,同時也改正瞭不少書寫錯誤。很榮幸能與Apress團隊一起工作。
—MohammedGuller
Spark大數據分析:核心概念、技術及實踐 下載 mobi epub pdf txt 電子書