編輯推薦
Spark開發者齣品!
《Spark快速大數據分析》是一本為Spark初學者準備的書,它沒有過多深入實現細節,而是更多關注上層用戶的具體用法。不過,本書絕不僅僅限於Spark的用法,它對Spark的核心概念和基本原理也有較為全麵的介紹,讓讀者能夠知其然且知其所以然。
本書介紹瞭開源集群計算係統Apache Spark,它可以加速數據分析的實現和運行。利用Spark,你可以用Python、Java以及Scala的簡易API來快速操控大規模數據集。
本書由Spark開發者編寫,可以讓數據科學傢和工程師即刻上手。你能學到如何使用簡短的代碼實現復雜的並行作業,還能瞭解從簡單的批處理作業到流處理以及機器學習等應用。
內容簡介
《Spark快速大數據分析》由 Spark 開發者及核心成員共同打造,講解瞭網絡大數據時代應運而生的、能高效迅捷地分析處理數據的工具——Spark,它帶領讀者快速掌握用 Spark 收集、計算、簡化和保存海量數據的方法,學會交互、迭代和增量式分析,解決分區、數據本地化和自定義序列化等問題。
作者簡介
Holden Karau,是Databricks的軟件開發工程師,活躍於開源社區。她還著有《Spark快速數據處理》。
Andy Konwinski,是Databricks聯閤創始人,Apache Spark項目技術專傢,還是Apache Mesos項目的聯閤發起人。
Patrick Wendell,是Databricks聯閤創始人,也是Apache Spark項目技術專傢。他還負責維護Spark核心引擎的幾個子係統。
Matei Zaharia,是Databricks的CTO,同時也是Apache Spark項目發起人以及Apache基金會副主席。
內頁插圖
精彩書評
“Spark是構建大數據應用流行的框架,而如果有人要我推薦一些指南書籍,《Spark快速大數據分析》無疑會排在首位。”
——Ben Lorica,O'Reilly首席數據科學傢
目錄
推薦序 xi
譯者序 xiv
序 xvi
前言 xvii
第1章 Spark數據分析導論 1
1.1 Spark是什麼 1
1.2 一個大一統的軟件棧 2
1.2.1 Spark Core 2
1.2.2 Spark SQL 3
1.2.3 Spark Streaming 3
1.2.4 MLlib 3
1.2.5 GraphX 3
1.2.6 集群管理器 4
1.3 Spark的用戶和用途 4
1.3.1 數據科學任務 4
1.3.2 數據處理應用 5
1.4 Spark簡史 5
1.5 Spark的版本和發布 6
1.6 Spark的存儲層次 6
第2章 Spark下載與入門 7
2.1 下載Spark 7
2.2 Spark中Python和Scala的shell 9
2.3 Spark 核心概念簡介 12
2.4 獨立應用 14
2.4.1 初始化SparkContext 15
2.4.2 構建獨立應用 16
2.5 總結 19
第3章 RDD編程 21
3.1 RDD基礎 21
3.2 創建RDD 23
3.3 RDD操作 24
3.3.1 轉化操作 24
3.3.2 行動操作 26
3.3.3 惰性求值 27
3.4 嚮Spark傳遞函數 27
3.4.1 Python 27
3.4.2 Scala 28
3.4.3 Java 29
3.5 常見的轉化操作和行動操作 30
3.5.1 基本RDD 30
3.5.2 在不同RDD類型間轉換 37
3.6 持久化( 緩存) 39
3.7 總結 40
第4章 鍵值對操作 41
4.1 動機 41
4.2 創建Pair RDD 42
4.3 Pair RDD的轉化操作 42
4.3.1 聚閤操作 45
4.3.2 數據分組 49
4.3.3 連接 50
4.3.4 數據排序 51
4.4 Pair RDD的行動操作 52
4.5 數據分區(進階) 52
4.5.1 獲取RDD的分區方式 55
4.5.2 從分區中獲益的操作 56
4.5.3 影響分區方式的操作 57
4.5.4 示例:PageRank 57
4.5.5 自定義分區方式 59
4.6 總結 61
第5章 數據讀取與保存 63
5.1 動機 63
5.2 文件格式 64
5.2.1 文本文件 64
5.2.2 JSON 66
5.2.3 逗號分隔值與製錶符分隔值 68
5.2.4 SequenceFile 71
5.2.5 對象文件 73
5.2.6 Hadoop輸入輸齣格式 73
5.2.7 文件壓縮 77
5.3 文件係統 78
5.3.1 本地/“常規”文件係統 78
5.3.2 Amazon S3 78
5.3.3 HDFS 79
5.4 Spark SQL中的結構化數據 79
5.4.1 Apache Hive 80
5.4.2 JSON 80
5.5 數據庫 81
5.5.1 Java數據庫連接 81
5.5.2 Cassandra 82
5.5.3 HBase 84
5.5.4 Elasticsearch 85
5.6 總結 86
第6章 Spark編程進階 87
6.1 簡介 87
6.2 纍加器 88
6.2.1 纍加器與容錯性 90
6.2.2 自定義纍加器 91
6.3 廣播變量 91
6.4 基於分區進行操作 94
6.5 與外部程序間的管道 96
6.6 數值RDD 的操作 99
6.7 總結 100
第7章 在集群上運行Spark 101
7.1 簡介 101
7.2 Spark運行時架構 101
7.2.1 驅動器節點 102
7.2.2 執行器節點 103
7.2.3 集群管理器 103
7.2.4 啓動一個程序 104
7.2.5 小結 104
7.3 使用spark-submit 部署應用 105
7.4 打包代碼與依賴 107
7.4.1 使用Maven構建的用Java編寫的Spark應用 108
7.4.2 使用sbt構建的用Scala編寫的Spark應用 109
7.4.3 依賴衝突 111
7.5 Spark應用內與應用間調度 111
7.6 集群管理器 112
7.6.1 獨立集群管理器 112
7.6.2 Hadoop YARN 115
7.6.3 Apache Mesos 116
7.6.4 Amazon EC2 117
7.7 選擇閤適的集群管理器 120
7.8 總結 121
第8章 Spark調優與調試 123
8.1 使用SparkConf配置Spark 123
8.2 Spark執行的組成部分:作業、任務和步驟 127
8.3 查找信息 131
8.3.1 Spark網頁用戶界麵 131
8.3.2 驅動器進程和執行器進程的日誌 134
8.4 關鍵性能考量 135
8.4.1 並行度 135
8.4.2 序列化格式 136
8.4.3 內存管理 137
8.4.4 硬件供給 138
8.5 總結 139
第9章 Spark SQL 141
9.1 連接Spark SQL 142
9.2 在應用中使用Spark SQL 144
9.2.1 初始化Spark SQL 144
9.2.2 基本查詢示例 145
9.2.3 SchemaRDD 146
9.2.4 緩存 148
9.3 讀取和存儲數據 149
9.3.1 Apache Hive 149
9.3.2 Parquet 150
9.3.3 JSON 150
9.3.4 基於RDD 152
9.4 JDBC/ODBC服務器 153
9.4.1 使用Beeline 155
9.4.2 長生命周期的錶與查詢 156
9.5 用戶自定義函數 156
9.5.1 Spark SQL UDF 156
9.5.2 Hive UDF 157
9.6 Spark SQL性能 158
9.7 總結 159
第10章 Spark Streaming 161
10.1 一個簡單的例子 162
10.2 架構與抽象 164
10.3 轉化操作 167
10.3.1 無狀態轉化操作 167
10.3.2 有狀態轉化操作 169
10.4 輸齣操作 173
10.5 輸入源 175
10.5.1 核心數據源 175
10.5.2 附加數據源 176
10.5.3 多數據源與集群規模 179
10.6 24/7不間斷運行 180
10.6.1 檢查點機製 180
10.6.2 驅動器程序容錯 181
10.6.3 工作節點容錯 182
10.6.4 接收器容錯 182
10.6.5 處理保證 183
10.7 Streaming用戶界麵 183
10.8 性能考量 184
10.8.1 批次和窗口大小 184
10.8.2 並行度 184
10.8.3 垃圾迴收和內存使用 185
10.9 總結 185
第11章 基於MLlib的機器學習 187
11.1 概述 187
11.2 係統要求 188
11.3 機器學習基礎 189
11.4 數據類型 192
11.5 算法 194
11.5.1 特徵提取 194
11.5.2 統計 196
11.5.3 分類與迴歸 197
11.5.4 聚類 202
11.5.5 協同過濾與推薦 203
11.5.6 降維 204
11.5.7 模型評估 206
11.6 一些提示與性能考量 206
11.6.1 準備特徵 206
11.6.2 配置算法 207
11.6.3 緩存RDD以重復使用 207
11.6.4 識彆稀疏程度 207
11.6.5 並行度 207
11.7 流水綫API 208
11.8 總結 209
作者簡介 210
封麵介紹 210
精彩書摘
Spark簡史
Spark 是由一個強大而活躍的開源社區開發和維護的,社區中的開發者們來自許許多多不同的機構。如果你或者你所在的機構是第一次嘗試使用 Spark,也許你會對 Spark 這個項目的曆史感興趣。Spark 是於 2009 年作為一個研究項目在加州大學伯剋利分校 RAD 實驗室(AMPLab 的前身)誕生。實驗室中的一些研究人員曾經用過 Hadoop MapReduce。他們發現 MapReduce 在迭代計算和交互計算的任務上錶現得效率低下。因此,Spark 從一開始就是為交互式查詢和迭代算法設計的,同時還支持內存式存儲和高效的容錯機製。
2009 年,關於 Spark 的研究論文在學術會議上發錶,同年 Spark 項目正式誕生。其後不久,相比於 MapReduce,Spark 在某些任務上已經獲得瞭 10 ~ 20 倍的性能提升。
Spark 最早的一部分用戶來自加州伯剋利分校的其他研究小組,其中比較著名的有 Mobile Millennium。作為機器學習領域的研究項目,他們利用 Spark 來監控並預測舊金山灣區的交通擁堵情況。僅僅過瞭短短的一段時間,許多外部機構也開始使用 Spark。如今,有超過 50 個機構將自己添加到瞭使用 Spark 的機構列錶頁麵。在 Spark 社區如火如荼的社區活動 Spark Meetups和 Spark 峰會中,許多機構也嚮大傢積極分享他們特有的 Spark 應用場景。除瞭加州大學伯剋利分校,對 Spark 作齣貢獻的主要機構還有 Databricks、雅虎以及英特爾。
2011 年,AMPLab 開始基於 Spark 開發更高層的組件,比如 Shark(Spark 上的 Hive)1 和 Spark Streaming。這些組件和其他一些組件一起被稱為伯剋利數據分析工具棧(BDAS,https://amplab.cs.berkeley.edu/software/)。
1Shark 已經被 Spark SQL 所取代。
Spark 最早在 2010 年 3 月開源,並且在 2013 年 6 月交給瞭 Apache 基金會,現在已經成瞭 Apache 開源基金會的頂級項目。
Spark的版本和發布
自其齣現以來,Spark 就一直是一個非常活躍的項目,Spark 社區也一直保持著非常繁榮的態勢。隨著版本號的不斷更迭,Spark 的貢獻者也與日俱增。Spark 1.0 吸引瞭 100 多個開源程序員參與開發。盡管項目活躍度在飛速地提升,Spark 社區依然保持著常規的發布新版本的節奏。2014 年 5 月,Spark 1.0 正式發布,而本書則主要關注 Spark 1.1.0 以及後續的版本。不過,大多數概念在老版本的 Spark 中依然適用,而大多數示例也能運行在老版本的 Spark 上。
Spark的存儲層次
Spark 不僅可以將任何 Hadoop 分布式文件係統(HDFS)上的文件讀取為分布式數據集,也可以支持其他支持 Hadoop 接口的係統,比如本地文件、亞馬遜 S3、Cassandra、Hive、HBase 等。我們需要弄清楚的是,Hadoop 並非 Spark 的必要條件,Spark 支持任何實現瞭 Hadoop 接口的存儲係統。Spark 支持的 Hadoop 輸入格式包括文本文件、SequenceFile、Avro、Parquet 等。我們會在第 5 章討論讀取和存儲時詳細介紹如何與這些數據源進行交互。
……
前言/序言
Spark快速大數據分析 下載 mobi epub pdf txt 電子書 格式