Spark GraphX實戰

Spark GraphX實戰

《Spark GraphX實戰》 一書原作者Michael S. Malak(麥可 S. 馬拉克)、Robin East(羅賓 伊斯特),中文版由時金魁、黃光遠譯,電子工業出版社2017年4月出版

內容提要

《Spark GraphX實戰》是一本Spark GraphX入門書籍。前5章為基礎內容,即使讀者對Spark、GraphX、Scala不熟悉,也能快速上手;後5章為圖計算進階,主要是圖算法和機器學習算法的相關內容。專門講圖計算的書很少,《Spark GraphX實戰》在第2、3、4章介紹了圖的基礎知識、GraphX基礎知識、GraphX內置的圖算法。第6章到第10章,主要介紹了GraphX之外的圖算法、機器學習、圖工具、GraphX監控和最佳化、GraphX的能力增強等實用技能。第9章和第10章主要介紹性能調優和監控,主要面向生產環境,有不少可以借鑑的技巧。

《Spark GraphX實戰》面向對圖計算感興趣的讀者,旨在幫助讀者掌握Spark GraphX的相關知識及其套用。

目錄

序言 XI

致謝XIII

關於本書 XIV

關於封面插圖 XVIII

第1部分 Spark和圖

1 兩項重要的技術:Spark和圖 3

1.1 Spark:超越Hadoop MapReduce 4

1.1.1 模糊的大數據定義 6

1.1.2 Hadoop:Spark之前的世界 6

1.1.3 Spark:記憶體中的 MapReduce處理 7

1.2 圖:挖掘關係中的含義 9

1.2.1 圖的套用 11

1.2.2 圖數據的類型 12

1.2.3 普通的關係型資料庫在圖方面的不足 14

1.3 把快如閃電的圖處理放到一起:Spark GraphX 14

1.3.1 圖的屬性:增加豐富性 15

1.3.2 圖的分區:當圖變為大數據集時 17

1.3.3 GraphX允許選擇:圖並行還是數據並行 19

1.3.4 GraphX支持的各種數據處理方式 19

1.3.5 GraphX與其他圖系統 21

1.3.6 圖存儲:分散式檔案存儲與圖資料庫 23

1.4 小結 23

2 GraphX快速入門 24

2.1 準備開始並準備數據 24

2.2 用Spark Shell做GraphX互動式查詢 26

2.3 PageRank算法示例 29

2.4 小結 31

3 基礎知識 32

3.1 Scala—Spark的原生程式語言 33

3.1.1 Scala的理念:簡潔和表現力 33

3.1.2 函式式編程 34

3.1.3 類型推斷 38

3.1.4 類的聲明 39

3.1.5 map和 reduce 41

3.1.6 一切皆是“函式”42

3.1.7 與 Java的互操作性 44

3.2 Spark 44

3.2.1 分散式記憶體數據: RDD 44

3.2.2 延遲求值 47

3.2.3 集群要求和術語解釋 49

3.2.4 序列化 50

3.2.5 常用的 RDD操作 50

3.2.6 Spark和 SBT初步 54

3.3 圖術語解釋 55

3.3.1 基礎 55

3.3.2 RDF圖和屬性圖 58

3.3.3 鄰接矩陣 59

3.3.4 圖查詢系統 59

3.4 小結 60

第2部分 連線頂點

4 GraphX 基礎 65

4.1 頂點對象與邊對象 65

4.2 mapping操作 71

4.2.1 簡單的圖轉換 71

4.2.2 Map/Reduce 73

4.2.3 疊代的 Map/Reduce 77

4.3 序列化/反序列化 79

4.3.1 讀 /寫二進制格式的數據 79

4.3.2 JSON格式 81

4.3.3 Gephi可視化軟體的 GEXF格式 85

4.4 圖生成 86

4.4.1 確定的圖 86

4.4.2 隨機圖 88

4.5 Pregel API 90

4.6 小結 96

5 內置圖算法 97

5.1 找出重要的圖節點:網頁排名 98

5.1.1 PageRank算法解釋 98

5.1.2 在 GraphX中使用 PageRank 99

5.1.3 個性化的 PageRank 102

5.2 衡量連通性:三角形數103

5.2.1 三角形關係的用法 103

5.2.2 Slashdot朋友和反對者的用戶關係示例 104

5.3 查找最少的跳躍:最短路徑 106

5.4 找到孤島人群:連通組件 107

5.4.1 預測社交圈子 108

5.5 受歡迎的回饋:增強連通組件 114

5.6 社區發現算法:標籤傳播 115

5.7 小結 117

6 其他有用的圖算法118

6.1 你自己的GPS:有權值的最短路徑 119

6.2 旅行推銷員問題:貪心算法124

6.3 路徑規劃工具:最小生成樹 127

6.3.1 基於 Word2Vec的推導分類法和最小生成樹 131

6.4 小結 135

7 機器學習 136

7.1 監督、無監督、半監督學習 137

7.2 影片推薦: SVDPlusPlus. 139

7.2.1 公式解釋 146

7.3 在MLlib中使用GraphX 146

7.3.1 主題聚類:隱含狄利克雷分布 147

7.3.2 垃圾信息檢測: LogisticRegressionWithSGD 156

7.3.3 使用冪疊代聚類進行圖像分割(計算機視覺) 160

7.4 窮人(簡化版)的訓練數據:基於圖的半監督學習 165

7.4.1 K近鄰圖構建 168

7.4.2 半監督學習標籤傳播算法 175

7.5 小結 180

第3部分 更多內容

8 缺失的算法 183

8.1 缺失的基本圖操作 184

8.1.1 通用意義上的子圖 184

8.1.2 圖合併 185

8.2 讀取RDF圖檔案 189

8.2.1 頂點匹配以及圖構建 189

8.2.2 使用 IndexedRDD和 RDD HashMap來提升性能 191

8.3 窮人(簡化版)的圖同構:找到Wikipedia缺失的信息 197

8.4 全局聚類係數:連通性比較 202

8.5 小結 205

9 性能和監控 207

9.1 監控Spark套用 208

9.1.1 Spark如何運行套用 208

9.1.2 用 Spark監控來了解你的套用的運行時信息 211

9.1.3 history server 221

9.2 Spark配置 223

9.2.1 充分利用全部 CPU資源 226

9.3 Spark性能調優 227

9.3.1 用快取和持久化來加速 Spark 227

9.3.2 checkpointing 230

9.3.3 通過序列化降低記憶體壓力 232

9.4 圖分區 233

9.5 小結 235

10 更多語言以及工具 237

10.1 在GraphX中使用除Scala外的其他語言 238

10.1.1 在 GraphX中使用 Java 7 238

10.1.2 在 GraphX中使用 Java 8 245

10.1.3 未來 GraphX是否會支持 Python或者 R 245

10.2 其他可視化工具:Apache Zeppelin 和 d3.js 245

10.3 類似一個資料庫:Spark Job Server 248

10.3.1 示例:查詢 Slashdot好友的分離程度 250

10.3.2 更多使用 Spark Job Server的例子 253

10.4 通過GraphFrames在Spark的圖上使用SQL 254

10.4.1 GraphFrames和 GraphX的互操作性 255

10.4.2 使用 SQL進行便捷、高性能的操作 257

10.4.3 使用 Cypher語言的子集來進行頂點搜尋 258

10.4.4 稍微複雜一些的 YAGO圖同構搜尋 260

10.5 小結 264

附錄A 安裝Spark 266

附錄B Gephi可視化軟體 271

附錄C 更多資源 275

附錄D 本書中的Scala小貼士 278

相關詞條

相關搜尋

熱門詞條

聯絡我們