序言 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
· · · · · · (
收起)