Spark數據分析:基于Python語言 》

      網友投稿 1536 2022-05-30

      數據科學與工程技術叢書

      Spark數據分析:基于Python語言

      Data Analytics with Spark Using Python

      [澳] 杰夫瑞·艾文(Jeffrey Aven) 著

      王道遠 譯

      譯 者 序

      近幾年來,大數據這個詞的熱度似乎已經被人工智能蓋過。但是實際上,大數據的真正應用在這幾年才開始走進各行各業。而Spark的接口非常簡單易用,對于廣大Python愛好者來說,Spark是投身大數據革命的最佳選擇。如今,Spark的用戶越來越多,其中使用PySpark的人也不在少數,越來越多的組織通過大數據技術創造出屬于自己的價值。希望本書讀者也能成為大數據的弄潮兒。

      盡管譯者已經結合自身多年的Spark開發經驗對本書內容做了一定修正,但由于自身水平和所投入的時間精力有限,本書難免會有疏漏之處。歡迎讀者朋友們雅正,我的電子郵箱是me@daoyuan.wang。

      感謝我的家人在翻譯期間對我的支持,讓我在這幾個月將不多的空閑時間用于翻譯,并享受著無須做家務也能過得井井有條的生活。

      王道遠

      2018年冬

      前  言

      Spark在這場由大數據與開源軟件掀起的顛覆性革命中處于核心位置。不論是嘗試Spark的意向還是實際用例的數量都在以幾何級數增長,而且毫無衰退的跡象。本書將手把手引導你在大數據分析領域中收獲事業上的成功。

      本書重點

      本書重點關注Spark項目的基本知識,從Spark核心技術開始,然后拓展到各種Spark擴展技術、Spark相關項目及子項目,以及Spark所處的豐富的生態系統里各種別的開源技術,比如Hadoop、Kafka、Cassandra等。

      本書所介紹的Spark基本概念(包括運行環境、集群架構、應用架構等)與編程語言無關且非?;A,而大多數示例程序和練習是用Python實現的。Spark的Python API(PySpark)為數據分析師、數據工程師、數據科學家等提供了易用的編程環境,讓開發者能在獲得Python語言的靈活性和可擴展性的同時,獲得Spark的分布式處理能力和伸縮性。

      本書所涉及的范圍非常廣泛,涵蓋了從基本的Spark核心編程到Spark SQL、Spark Streaming、機器學習等方方面面的內容。本書對于每個主題都給出了良好的介紹和概覽,足以讓你以Spark項目為基礎構建出針對任何特定領域或學科的平臺。

      目標讀者

      本書是為有志進入大數據領域或已經入門想要進一步鞏固大數據領域知識的數據分析師和工程師而寫的。當前市場非常需要具備大數據技能、懂得大數據領域優秀處理框架Spark的工程師。本書的目標是針對這一不斷增長的市場需求培訓讀者,使得讀者獲得雇主急需的技能。

      對于閱讀本書來說,有Python使用經驗是有幫助的,沒有的話也沒關系,畢竟Python對于任何有編程經驗的人來說都非常直觀易懂。讀者最好對數據分析和數據處理有一定了解。這本書尤其適合有興趣進入大數據領域的數據倉庫技術人員閱讀。

      如何使用本書

      本書分為兩大部分共8章。第一部分“Spark基礎”包括4章,會使讀者深刻理解Spark是什么,如何部署Spark,如何使用Spark進行基本的數據處理操作。

      第1章概要介紹大數據生態圈,包括Spark項目的起源和演進過程。討論Spark項目的關鍵屬性,包括Spark是什么,用起來如何,以及Spark與Hadoop項目之間的關系。

      第2章展示如何部署一個Spark集群,包括Spark集群的各種部署模式,以及調用Spark的各種方法。

      第3章討論Spark集群和應用是如何運作的,讓讀者深刻理解Spark是如何工作的。

      第4章介紹使用彈性分布式數據集(RDD)進行Spark初級編程的基礎知識。

      第二部分“基礎拓展”包括后4章的內容,擴展到Spark的core模塊以外,包括SQL和NoSQL系統、流處理應用、數據科學與機器學習中Spark的使用。

      第5章講解用來擴展、加速和優化常規Spark例程的高級元件,包括各種共享變量和RDD存儲,以及分區的概念及其實現。

      第6章討論Spark與SQL的整合,還有Spark與非關系型數據庫的整合。

      第7章介紹Spark的Streaming子項目,以及Streaming中最基本的DStream對象。該章還涵蓋Spark對于Apache Kafka這樣的常用消息系統的使用。

      第8章介紹通過R語言使用Spark建立預測模型,以及Spark中用來實現機器學習的子項目MLlib。

      本書代碼

      本書中各個練習的示例數據和源代碼可以從http://sparkusingpython.com下載。也可以從https://github.com/sparktraining/spark_using_python查看或者下載。

      引  言

      Spark是優秀的大數據處理平臺和編程接口,與大數據技術浪潮密不可分。在本書撰寫時,Spark是Apache軟件基金會(ASF)框架下最活躍的開源項目,也是最活躍的開源大數據項目。

      數據分析、數據處理以及數據科學社區都對Spark有著濃厚興趣,因而理解Spark是什么,Spark能干什么,Spark的優勢在哪里,以及如何利用Spark進行大數據分析都是很重要的。這本書涵蓋了上述內容的方方面面。

      與其他介紹Spark的出版物不同,多數書籍主要介紹Scala API,而本書專注于Spark的Python API,也就是PySpark。選擇Python作為本書基礎語言是因為Python是一門直觀易懂的解釋型語言,廣為人知而且新手也極易上手。更何況Python對于數據科學家而言是一門非常受歡迎的編程語言,而數據科學家在Spark社區也是相當大的一個群體。

      本書會從零開始講大數據和Spark,因此無論你是從未接觸Spark和Hadoop,還是已經有所接觸但正在尋求全面了解Spark的運作方式和如何充分利用Spark豐富的功能,這本書都是合適的。

      本書還會介紹一些相近的或者相互協作的平臺、項目以及技術,比如Hadoop、HBase、Kafka等,并介紹它們如何與Spark交互與集成。

      過去的幾年中,我的工作都集中在這個領域,包括講授大數據分析課程,以及為客戶提供咨詢服務。我經歷了Spark和大數據乃至整個開源運動的出現和成熟,并且參與到了開源軟件融入企業使用的進程中。我盡量把個人的學習歷程總結到了本書中。

      希望這本書能助你成為大數據和Spark從業人員。

      目  錄

      譯者序

      前言

      引言

      第一部分 Spark基礎

      第1章 大數據、Hadoop、Spark介紹? 2

      1.1 大數據、分布式計算、Hadoop簡介? 2

      1.1.1 大數據與Hadoop簡史? 2

      1.1.2 Hadoop簡介? 3

      1.2 Spark簡介? 8

      1.2.1 Spark背景? 9

      1.2.2 Spark的用途? 9

      1.2.3 Spark編程接口? 9

      1.2.4 Spark程序的提交類型? 10

      1.2.5 Spark應用程序的輸入/輸出類型? 11

      1.2.6 Spark中的RDD? 11

      1.2.7 Spark與Hadoop? 11

      1.3 Python函數式編程? 12

      1.3.1 Python函數式編程中的數據結構? 12

      1.3.2 Python對象序列化? 15

      1.3.3 Python函數式編程基礎? 17

      1.4 本章小結? 19

      第2章 部署Spark? 20

      2.1 Spark部署模式? 20

      2.1.1 本地模式? 21

      2.1.2 Spark獨立集群? 21

      2.1.3 基于YARN運行Spark? 22

      2.1.4 基于Mesos運行Spark? 22

      2.2 準備安裝Spark? 23

      2.3 獲取Spark? 23

      2.4 在Linux或Mac OS X上安裝Spark? 25

      2.5 在Windows上安裝Spark? 26

      2.6 探索Spark安裝目錄? 28

      2.7 部署多節點的Spark獨立集群? 29

      2.8 在云上部署Spark? 30

      2.8.1 AWS? 30

      2.8.2 GCP? 32

      2.8.3 Databricks? 32

      2.9 本章小結? 34

      第3章 理解Spark集群架構? 35

      3.1 Spark應用中的術語? 35

      3.1.1 Spark驅動器? 36

      3.1.2 Spark工作節點與執行器? 38

      3.1.3 Spark主進程與集群管理器? 40

      3.2 使用獨立集群的Spark應用? 41

      3.3 在YARN上運行Spark應用? 42

      3.3.1 ResourceManager作為集群管理器? 42

      3.3.2 ApplicationMaster作為Spark主進程? 42

      3.4 在YARN上運行Spark應用的部署模式? 42

      3.4.1 客戶端模式? 42

      3.4.2 集群模式? 43

      3.4.3 回顧本地模式? 45

      3.5 本章小結? 45

      第4章 Spark編程基礎? 46

      4.1 RDD簡介? 46

      《Spark數據分析:基于Python語言 》

      4.2 加載數據到RDD? 48

      4.2.1 從文件創建RDD? 48

      4.2.2 從文本文件創建RDD? 49

      4.2.3 從對象文件創建RDD? 52

      4.2.4 從數據源創建RDD? 52

      4.2.5 從JSON文件創建RDD? 54

      4.2.6 通過編程創建RDD? 56

      4.3 RDD操作? 57

      4.3.1 RDD核心概念? 57

      4.3.2 基本的RDD轉化操作? 61

      4.3.3 基本的RDD行動操作? 65

      4.3.4 鍵值對RDD的轉化操作? 69

      4.3.5 MapReduce與單詞計數練習? 75

      4.3.6 連接操作? 78

      4.3.7 在Spark中連接數據集? 82

      4.3.8 集合操作? 85

      4.3.9 數值型RDD的操作? 87

      4.4 本章小結? 89

      第二部分 基礎拓展

      第5章 Spark核心API高級編程? 92

      5.1 Spark中的共享變量? 92

      5.1.1 廣播變量? 92

      5.1.2 累加器? 96

      5.1.3 練習:使用廣播變量和累加器? 99

      5.2 Spark中的數據分區? 100

      5.2.1 分區概述? 100

      5.2.2 掌控分區? 101

      5.2.3 重分區函數? 102

      5.2.4 針對分區的API方法? 104

      5.3 RDD的存儲選項? 106

      5.3.1 回顧RDD譜系? 106

      5.3.2 RDD存儲選項? 107

      5.3.3 RDD緩存? 109

      5.3.4 持久化RDD? 109

      5.3.5 選擇何時持久化或緩存RDD? 112

      5.3.6 保存RDD檢查點? 112

      5.3.7 練習:保存RDD檢查點? 114

      5.4 使用外部程序處理RDD? 115

      5.5 使用Spark進行數據采樣? 117

      5.6 理解Spark應用與集群配置? 118

      5.6.1 Spark環境變量? 118

      5.6.2 Spark配置屬性? 121

      5.7 Spark優化? 124

      5.7.1 早過濾,勤過濾? 124

      5.7.2 優化滿足結合律的操作? 124

      5.7.3 理解函數和閉包的影響? 126

      5.7.4 收集數據的注意事項? 127

      5.7.5 使用配置參數調節和優化應用? 127

      5.7.6 避免低效的分區? 128

      5.7.7 應用性能問題診斷? 130

      5.8 本章小結? 133

      第6章 使用Spark進行SQL與NoSQL編程? 134

      6.1 Spark SQL簡介? 134

      6.1.1 Hive簡介? 134

      6.1.2 Spark SQL架構? 138

      6.1.3 DataFrame入門? 141

      6.1.4 使用DataFrame? 150

      6.1.5 DataFrame緩存、持久化與重新分區? 157

      6.1.6 保存DataFrame輸出? 158

      6.1.7 訪問Spark SQL? 161

      6.1.8 練習:使用Spark SQL? 163

      6.2 在Spark中使用NoSQL系統? 165

      6.2.1 NoSQL簡介? 165

      6.2.2 在Spark中使用HBase? 166

      6.2.3 練習:在Spark中使用HBase? 169

      6.2.4 在Spark中使用Cassandra? 170

      6.2.5 在Spark中使用DynamoDB? 172

      6.2.6 其他NoSQL平臺? 174

      6.3 本章小結? 174

      第7章 使用Spark處理流數據與消息? 175

      7.1 Spark Streaming簡介? 175

      7.1.1 Spark Streaming架構? 176

      7.1.2 DStream簡介? 177

      7.1.3 練習:Spark Streaming入門? 183

      7.1.4 狀態操作? 184

      7.1.5 滑動窗口操作? 185

      7.2 結構化流處理? 188

      7.2.1 結構化流處理數據源? 188

      7.2.2 結構化流處理的數據輸出池? 189

      7.2.3 輸出模式? 190

      7.2.4 結構化流處理操作? 190

      7.3 在Spark中使用消息系統? 192

      7.3.1 Apache Kafka? 192

      7.3.2 KafkaUtils? 195

      7.3.3 練習:在Spark中使用Kafka? 196

      7.3.4 亞馬遜Kinesis? 199

      7.4 本章小結? 203

      第8章 Spark數據科學與機器學習簡介? 204

      8.1 Spark與R語言? 204

      8.1.1 R語言簡介? 204

      8.1.2 通過R語言使用Spark? 210

      8.1.3 練習:在RStudio中使用SparkR? 215

      8.2 Spark機器學習? 217

      8.2.1 機器學習基礎? 217

      8.2.2 使用Spark MLlib進行機器學習? 220

      8.2.3 練習:使用Spark MLlib實現推薦器? 224

      8.2.4 使用Spark ML進行機器學習? 227

      8.3 利用筆記本使用Spark? 231

      8.3.1 利用Jupyter(IPython)筆記本使用Spark? 231

      8.3.2 利用Apache Zeppelin筆記本使用Spark? 233

      8.4 本章小結? 234

      Spark python spark Python

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Python 爬蟲進階五之多線程的用法
      下一篇:ArrayList 源碼分析
      相關文章
      亚洲天天做日日做天天看| 亚洲不卡中文字幕无码| 亚洲男人电影天堂| 亚洲视频在线视频| 久久亚洲私人国产精品| 无码乱人伦一区二区亚洲| 亚洲AV综合色区无码一区爱AV| 亚洲视频人成在线播放| 亚洲日本va午夜中文字幕久久| 国产精品亚洲专区在线播放| 国内成人精品亚洲日本语音| 男人的天堂亚洲一区二区三区 | 激情婷婷成人亚洲综合| 亚洲AV无码成人精品区狼人影院| 亚洲国产精品久久久久秋霞小| 亚洲精品无码久久久久A片苍井空| 亚洲人成自拍网站在线观看| 亚洲中文字幕精品久久| 亚洲国产精品99久久久久久| 亚洲丰满熟女一区二区哦| 国产成人精品久久亚洲高清不卡| 日本亚洲欧美色视频在线播放| 日本亚洲高清乱码中文在线观看| 精品国产亚洲第一区二区三区| 午夜亚洲福利在线老司机| 亚洲国产精品成人| 亚洲中文字幕无码永久在线| 久久91亚洲人成电影网站| 无码欧精品亚洲日韩一区| 亚洲欧洲日本国产| 亚洲久悠悠色悠在线播放| 亚洲国产欧洲综合997久久| 亚洲不卡AV影片在线播放| 国产亚洲精品a在线观看| 亚洲成A∨人片在线观看不卡| 久久精品国产亚洲av麻豆色欲 | 国产精品久久久久久亚洲小说| 亚洲av无码成人精品区| 亚洲中文字幕无码一区二区三区| 亚洲成色WWW久久网站| 久久亚洲精品国产精品|