√ 描繪瞭圖計算應用場景,用實例教你如何交互式使用GraphX
√ 清晰介紹如何從常規數據構建大圖及用圖算法和圖架構解決問題
√ 瞭解用於增強應用的圖技術及如何將機器學習算法應用於圖數據
√ GraphX API|為大圖開發圖算法|用於圖的機器學習算法|圖的可視化
本書是一本Spark GraphX入門書籍。前5章為基礎內容,即使讀者對Spark、GraphX、Scala不熟悉,也能快速上手;後5章為圖計算進階,主要是圖算法和機器學習算法的相關內容。專門講圖計算的書很少,本書在第2、3、4章介紹瞭圖的基礎知識、GraphX基礎知識、GraphX內置的圖算法。第6章到第10章,主要介紹瞭GraphX之外的圖算法、機器學習、圖工具、GraphX監控和優化、GraphX的能力增強等實用技能。第9章和第10章主要介紹性能調優和監控,主要麵嚮生産環境,有不少可以藉鑒的技巧。
本書麵嚮對圖計算感興趣的讀者,旨在幫助讀者掌握Spark GraphX的相關知識及其應用。
書作譯者文字水平較高,行文流暢,且工作在編程第一綫,擁有紮實的理論基礎和實踐經驗,相信會為讀者奉上一本質量上乘的圖書。
Michael Malak一直從事軟件開發工作,自 2013年年初以來他一直用 Spark為財富 200強的公司做開發工作,經常進行演示和分享,特彆是在科羅拉多州他住的丹佛 /博爾德地區。他的個人技術博客的地址是 http://technicaltidbit.com。
Robin East在一些大型企業曾擔任過 15年以上的顧問,在金融、政府、醫療保健和公共事業領域提供大數據和智能解決方案。他是 Worldpay的數據科學傢,幫助公司實現把數據用於核心業務上。可以在這裏看到他在 Spark、GraphX和機器學習方麵的作品: https://mlspeed.wordpress.com。
目錄
序言 ...............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
序言
圖(Graph)是什麼?圖是由邊和頂點組成的,不是由坐標軸和刻度構成的。在 Spark中是如何使用圖的?這就是本書將要迴答的問題。
常常說,“圖可以做任何事情”,或者“有很多不同的事情可以用圖來實現”。當然瞭,這兩種說法等於什麼也沒說。所以在本書中我們展示瞭一些具體的、實際的圖應用,以及探討如何用 Spark GraphX實現這些圖應用。
本書中有許多專業術語:大數據、 Hadoop、Spark、圖、機器學習、 Scala和函數式編程,這些內容本書都會一一講解。本書會涉及技術的高級部分,但不會涉及編程能力的每個方麵,如 Java編程。
下圖是 Google在趨勢上的統計,展示瞭這些專業術語在 2016年之前的受歡迎程度。
Big Data
Hadoop
Machine learning
Apache Spark Edges and vertices
2005 2007 2009 2011 2013 2015
注意,通常用 Spark和圖作為規範的通用術語,而不是 Apache Spark和 Edges and vertices,趨勢上後者已明顯被取代。機器學習和圖,在計算機科學中有悠久的曆史,現在作為主流的大數據技術,在商業領域又引起瞭新的潮流。如果你在學校學習過這些技術的理論知識,那麼現在準備實踐一下這些技術吧。
許多我們正在或曾經工作過的公司,已經把 Spark用在生産環境中瞭,盡管不一定用瞭 GraphX。當嘗試用 GraphX做一些圖解決方案的原型時,會很方便。如果你已經有瞭一個 Spark集群或者決定用雲平颱上的 Spark集群(例如 Databricks或 Amazon),那麼無須重新搭建一個新的特定於圖計算的集群,並且你可以在 GraphX API中使用已有的 Spark技能。現在越來越多的圖應用為大傢所熟知,從根據 Twitter數據發掘齣恐怖分子網絡到根據信用卡交易數據發現欺詐行為, GraphX已成為一個快速嘗試這些圖算法場景的易於使用的平颱。
本書有兩個明確目標:一是全麵覆蓋 Spark GraphX的方方麵麵;二是以讀者在前麵提到的大數據和圖計算方麵沒有任何專業知識為假定前提。寫這本書最大的挑戰是要有許多技術儲備,特彆是 Spark、Scala和圖;瞭解大量的 GraphX API以及圖的不同用法也是不小的挑戰。麵對這種情形,本書就需要與其他技術書籍略有不同:首先要花點時間入門,前 5章主要講解的就是基礎內容;本書還有大量有趣的實例,可以跟著一步步練習。本書中涉及的其他技術,讀者需要另做學習,本書將努力做到讓讀者並不需要有過多背景知識和經驗,就可以淺顯易懂地瞭解圖所能解決的問題。
緻謝
感謝 Manning齣版社許多工作人員對本書齣版所做的努力,特彆需要感謝三個人,他們的諸多指導使本書可以較好地完成。 Marina Michaels,我們的開發編輯,從一開始就指齣有些章節有很大的技術問題,這些問題大都是 Spark和圖計算的新問題。Michael Roberts,我們的技術開發編輯,在本書的製作過程中,與 Marina一樣,他給齣瞭大量的建議。 Antonio Magnaghi,我們的技術校對,不但對本書的示例代碼進行瞭嚴謹的核對,還編輯校對瞭本書的文本內容。
同時也感謝本書草稿時期給齣諸多有價值建議的讀者,他們是 Andy Petrella, Brent Foust,Charles Feduke,Gaurav Bhardwaj,Jason Kolter,Justin Fister,Michael Bright,Paul-Michael Sorhaindo,Rodrigo Abreu,Romi Kuntsman,Sumit Pal, Vincent Liard。
作者 Michael Malak感謝妻子和孩子在這幾個月寫作期間給予的耐心支持。
作者 Robin East感謝妻子和兩個兒子,他們容忍和支持瞭作者長時間的寫作以及在樓上偶爾消失。
關於本書
通過學習本書,希望能降低難懂的圖學習門檻,瞭解如何在市場份額最大的分布式計算框架 Apache Spark中開發圖應用。
本書的讀者對象
我們假定本書的讀者並不熟悉 Spark、Scala和圖相關的知識,本書會快速學習前麵提到的這些知識,會特彆側重於 Scala。在第 3章有 Scala的簡要介紹,全書中隻要齣現新的 Scala知識點都會有 Scala小貼士做詳細介紹(完整的列錶見附錄 D)。實際上,本書通過第 3章、Scala小貼士和附錄對 Scala做瞭較全麵的介紹。
另外,雖然在大學的圖論課程中數學證明很常見,但本書完全不做數學證明。本書的目標是圖算法和圖應用,有時會應需介紹圖相關的術語。
本書使用的是 Spark/GraphX 1.6版本。
我們假定讀者在 Java語言編程方麵有一些經驗,而在圖方麵要求不多,但通過書中插圖能自然地知道這些圖應用。
本書的內容組織
本書分為 3個部分。第 1部分有 3章,主要介紹使用 Spark GraphX的準備知識。第 2部分有 4章,主要介紹如何使用 GraphX。第 3部分有 3章,主要介紹 GraphX的進階知識。也可以將本書分為兩部分,前 5章為準備知識和 GraphX的基本 API,後 5章為 GraphX應用。
下麵是各章的內容提要。
. 第 1章介紹瞭什麼是大數據、 Spark和圖, Spark GraphX如何處理數據流。第 1章是一本迷你書,篇幅不長但內容涉及麵較廣。
. 第 2章簡單示範瞭如何使用 GraphX,無須具有 GraphX經驗。
. 第 3章介紹瞭 Spark、Scala和圖的基礎知識。
. 第 4章介紹瞭 Spark GraphX的基礎操作,以及如何使用 GraphX的兩個主要算法: Map/Reduce和 Pregel。
. 第 5章演示瞭如何使用 GraphX的諸多內置算法。
. 第 6章介紹瞭 GraphX API之外的內容,即 20世紀中期經典的圖算法,並用 GraphX實現瞭這些算法。
. 第 7章重點講機器學習。機器學習的內容本身就夠講一本書的,這裏沒有講解太多機器學習的基礎知識和經驗,而是直接介紹監督學習、無監督學習和半監督學習的高級實例。
. 第 8章展示瞭 GraphX如何完成一些自定義操作,有可能會構建一個圖處理庫:讀 RDF文件、圖的閤並、圖查找和計算全局聚類係數。
. 第 9章介紹瞭如何監控性能以及查看正在執行的 GraphX應用程序,如何利用緩存、checkpointing和序列化調優做性能調優。
. 第 10章介紹瞭在 GraphX中如何使用 Scala之外的語言(強烈建議不要這麼做),以及如何使用一些工具來補充 GraphX的不足。展示瞭用 GraphX在 Apache Zeppelin的交互式命令行 notebook上對圖進行可視化。第三方的工具 Spark JobServer可以讓 GraphX從單純的批處理係統轉變成一個在綫圖數據庫。最後,介紹瞭 Github上的一個項目—GraphFrames(GraphX的開發者開發的),它用 Spark SQL DataFrames而非 RDD提供瞭一種方便和高性能的圖查詢方式。
另外,本書包含 4個附錄。附錄 A介紹瞭 Spark的安裝方法,附錄 B簡要介紹瞭 Gephi可視化軟件,附錄 C包含關於 GraphX的在綫資料以及如何跟上社區最新進展,附錄 D中列齣瞭本書中的 Scala小貼士。如果你在 Spark、Scala或圖方麵是新手,通過前 5章的閱讀,能力可以得到提升。然後,就可以選擇性地閱讀後麵 5章的內容瞭。如果你對 Spark、Scala和圖的知識已經比較精通,但對 GraphX還不熟悉,那麼可以跳過前 3章甚至前 5章的內容直接閱讀後麵的內容。
關於本書中的代碼
本書中的源代碼可以在博文視點官方網站上下載,地址為 https:// www. broadview.com.cn。這本書中的大部分代碼是可以在交互式的 Spark Shell中執行的。從技術上來講, Scala擴展是一個誤稱,因為這些文件不能用 scalac編譯器進行編譯。要想讓這些實例代碼方便地編譯和執行,可以用 Maven的 pom.xml或 SBT的 .sbt文件完成。本書中的源代碼實例,有帶編號的列錶,也有普通的文本,這兩類源代碼都用瞭等寬字體以便與普通的正文區分開來。
一般情況下,源碼都會被格式化,我們添加瞭換行符,也修改瞭縮進以便適應本書的頁麵大小,甚至在代碼清單中添加瞭續行符( .)。另外,如果正文中對代碼有解釋,源碼中的注釋會被刪掉。代碼注釋會附帶許多列錶,以突齣重要的概念。
本書的示例代碼也可以從如上的齣版社網站上下載。
關於作者
Michael Malak一直從事軟件開發工作,自 2013年年初以來他一直用 Spark為財富 200強的公司做開發工作,經常進行演示和分享,特彆是在科羅拉多州他住的丹佛 /博爾德地區。他的個人技術博客的地址是 http://technicaltidbit.com。
Robin East在一些大型企業曾擔任過 15年以上的顧問,在金融、政府、醫療保健和公共事業領域提供大數據和智能解決方案。他是 Worldpay的數據科學傢,幫助公司實現把數據用於核心業務上。可以在這裏看到他在 Spark、GraphX和機器學習方麵的作品: https://mlspeed.wordpress.com。
配套服務
輕鬆注冊成為博文視點社區用戶(www.broadview.com.cn),即可享受以下服務:下載資源:本書所提供的示例代碼及資源文件均可在“下載資源”處下載。提交勘誤:您對書中內容的修改意見可在“提交勘誤”處提交,若被采
好好好好好好好好好好好好好好好好好好好好
評分幫同事買的,內容我就不知道瞭不是乾大數據的
評分nice。。。。。
評分書質量還可以,論述簡潔易讀
評分在看,很好。
評分送貨很快,好評
評分好
評分項目中剛好用到這塊,就上網搜瞭下,今天看看,希望有幫助!
評分此用戶未填寫評價內容
本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 book.cndgn.com All Rights Reserved. 新城书站 版權所有