成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Spark生態系統中的圖數據分析知識

大數據 Spark
圖結構可有效表示稀疏矩陣,因而圖數據分析可用于實現大數據分析。對于Spark生態系統中的圖處理系統GraphX,《Spark GraphX in Action》一書給出了詳細的教程和典型用例,將教會讀者如何使用GraphX和GraphFrames進行圖分析。本文是Info對該書作者的訪談,內容包括圖數據及分析技術、GraphX高效程序開發、圖數據分析的趨勢等。

[[173895]]

圖結構可有效表示稀疏矩陣,因而圖數據分析可用于實現大數據分析。對于Spark生態系統中的圖處理系統GraphX,《Spark GraphX in Action》一書給出了詳細的教程和典型用例,將教會讀者如何使用GraphX和GraphFrames進行圖分析。本文是Info對該書作者的訪談,內容包括圖數據及分析技術、GraphX高效程序開發、圖數據分析的趨勢等。

如何定義圖數據?

Michael Malak:就事論事,圖結構看上去并非像股價圖那樣,而是邊和點的集合。但這只是一種模糊的數學抽象。更具體地說,在書的第一章中我們將真實世界中的圖劃分為五類:網絡、樹、類RDBMS結構、稀疏矩陣以及其它雜七雜八的結構。

Robin East:傳統的數據分析方法側重于事物本身,即實體,例如銀行交易、資產注冊等等。而圖數據不僅關注事務,還關注事物之間的聯系。例如,如果有一個呼叫記錄告訴我張三曾打電話給李四,這樣就可以將張三和李四關聯起來。這種關聯關系提供了與兩者相關的有價值信息,而這樣的信息是不可能僅從兩者單純的個體數據中獲取的。

圖數據分析與傳統數據的處理的不同之處

Malak:正如我們在書的第一章中所描述的,RDBMS不足以有效地處理圖路徑遍歷運算,因為該運算需要進行大量的自連接運算。用于稀疏矩陣處理是另一個圖分析展示出良好性能的領域,在書中機器學習相關的第七章中對此有所描述。

East:圖分析事實上是一系列的實踐,這些實踐側重于對數據條目間關聯信息內容的描繪。在不同實體間連接模式可見的情況下,對不同數據間關聯建模提供了十分強大的能力。再次使用電話呼叫記錄作為例子,當我們對由不同人所做的不同呼叫而組成的“網絡”進行分析時,就可以去構建具有不同交互類型的圖形。在一些情況下,我們可以使用數據的結構信息對不同的行為進行分隔(例如區分犯罪與否)。

圖數據分析是如何促進大數據和預測分析?

Malak:對于已有的大數據,首先你需要從數據中抽取出結構化數據,通常是關系模型或者圖模型。一些問題可自然地表示為圖問題,例如地圖中的路由查找、社會網絡分析(尤其是在一個社會網絡圖中發現意見領袖)。所有的機器學習都是關于做預測的,而在書中關于機器學習的一章也是內容最長的。這一章中展示了一些使用圖數據上機器學習的方法。

East:基于大數據的預測分析的效能,事實上取決于抽取許多不同類型的特征作為預測算法輸入的能力。書中我最喜歡的例子就是對原有垃圾郵件檢測的全新實現。原問題是使用邏輯回歸檢測垃圾頁面,但是我們采用了一種有趣的新思想,即Truncated Page Rank算法,該算法使用基于圖的輸入特性擴展了傳統的輸入特性。書中展示了如何在GraphX中實現這個模型。

GraphFrames的工作機制

Malak:作為Apache Spark生態系統的一部分,GraphX是Spark的官方圖處理系統。即使在Spark 2.0中也是如此。GraphX基于RDD技術,每條邊和每個節點均由一個RDD表示。GraphFrames作為spark-packages.org所提供的附加軟件,依然是基于DataFrames的。

將GraphX與GrapeFrames進行對比,這很大程度上就是RDD與DataFrames的對比。使用DataFrames(對于GraphFrames也一樣),Catalyst查詢計劃器、Tungsten sun.misc.unsafe原始內存布局、即時字節碼生成會得到潛在的巨大性能提升。就即時字節碼生成而言,Spark 2.0對整個處理流水線而非keyhole代碼生成進行了改進,這取得了相比于Spark 1.6 Dataframes十倍的性能提升。GraphX具有內部路由表,這便利了三元組(triplet)的構建;GraphFrames雖然缺少內部路由表的設計,但從DataFrames所免費獲取的性能改進彌補這一不足,并給出了更大的性能優勢。

GraphFrames還具有使用Neo4j Cypher語言的子集和DataFrames對SQL語言的支持進行組合查詢的功能。最后一點,GraphFrames提供了對Python和Java語言的綁定,這對于喜歡Python語言和更適應Java開發的程序員是一個喜訊。但是GraphX的痛點在于僅官方支持Scala語言(雖然在書中我們也展示了如何跨域數以百計的關卡實現在開發中對Java的支持)。我們在第十章中涵蓋了GraphFrames相關內容,并給出了一個有趣的例子,就是去查找本應存在于Wikipedia中的缺失鏈接。

East:彈性分布式數據集(Resilient Distributed Datasets,RDD)是Spark提供的核心底層數據結構。在GraphX中,RDD用于表示圖中的邊和節點。另一方面,DataFrames是高層數據接口,提供了一些面向開發人員的有用特性,例如SQL接口。DataFrames還提供了若干性能優化。GraphFrames使用DataFrames表示圖,而非RDD。

GraphFrames中添加了若干GraphX所不具有的關鍵特性,例如查詢結構、Python屬性函數(Property)和Java API。無論如何,從一種表示方式轉化為另一種都是可能的,事實上這也是PageRank、連通分量等標準算法的實現方法。

四種不同的圖數據相關的概念

記者:你們能介紹一下NoSQL圖數據庫、圖數據查詢、圖數據分析和圖數據可視化這四種圖數據相關的概念嗎?

Malak:我在2016年6月的Spark峰會上做過一個報告,報告中對圖技術給出了一個很好的“頻譜”展示。頻譜圖的一端是真正OLTP風格的NoSQL圖數據庫,包括Neo4j、Titan、OrientDB等。另一端是OLAP風格的圖處理和數據分析系統,包括GraphX、GraphLab等。圖查詢涉及的范圍處于該頻譜圖的中央。NoSQL圖數據庫和GraphFrames也都可以進行查詢,但是GraphX在查詢方面非常有局限性。

無論OLTP風格圖數據庫或是OLAP風格的圖處理和分析系統,都可以應用圖數據庫可視化技術,所以圖數據可視化的領域范圍與該頻譜圖是相互正交的。在本書中我們論及兩種特定的技術:Gephi和組合使用Zpeppelin與d3.js。需要指出的是,圖可視化的用例與關系數據可視化的用例之間有很大的差異。關系數據可視化的目標是對數據取得直觀的了解,而圖數據可視化的目標在于對數據或算法進行調試。

East:正如Michael已提到的,現在已有一些不同的圖數據庫,它們滿足了一系列不同用例的需求。值得強調的是GraphX提供了內存中的圖處理功能,而非數據庫功能。可以使用GraphX從一系列數據源中構建基于內存的圖,這樣的數據源中可能包括對NoSQL圖數據庫的查詢。實際上后一種組合的潛在應用前景巨大。

圖可視化是一個需要整整一本書去闡述的話題,很高興看到Manning出版社已經于前期初版了這樣的一本書,那就是Corey Lanum所著的《Visualizing Graph Data》。

最佳解決方案用例

記者:在哪些受歡迎的用例數據處理中,圖數據處理是更好解決的方案?

Malak:應用GraphX的典型代表性算法是PageRank。一些用例使用或者拓展了RageRank算法,這樣的用例超越了Google將PageRank用于搜索排序的應用,可用于在論文引用網絡(書中給出了一個實例)和社會網絡這樣類型的圖中查找意見領袖。在書中我們還展示了如何將PageRank轉化為另一種稱為Truncated Page Rank的算法,這種算法可用于發現垃圾網頁鏈接農場。

除了PageRank之外,我們在書中還給出了一些經典圖算法的實現,這些經典圖算法提出于半個世紀之前,其中包括了最短路徑(例如地理空間映射)、旅行推銷員問題和最小生成樹等算法。最小生成樹問題聽上去很學術,但是在書中我們展示了它的一個有意思的應用,就是輔以MLlib提供的word2vec算法,從語料庫中自動建立層次化概念分類結構。一些Spark中的機器學習算法實際上是GraphX實現的,其中包括:一種類似于ALS可用于推薦系統的算法SVD++、冪迭代聚類(Power Iteration Clustering,PIC)等。在書中給出了使用PIC算法實現計算機視覺中圖像分割的例子。

East:在數據間關聯與數據項本身同等重要的情況下,就應該考慮使用圖方法進行數據處理。雖然有時使用傳統方法也能實現這種圖處理,但是這樣的實現方法很快會變成一種繁重工作,因為即使對于十分簡單的結構,這樣的方法也需要付出很大的努力才能實現。與之相對比的是,對于互連的數據,GraphX等圖處理系統提供了非常自然的數據表示和交互方式。

Spark機器學習程序庫的用例

記者:通過提供面向批處理、流數據和圖數據處理的程序庫,Spark給出了一種統一的大數據處理架構。Spark還提供了機器學習程序庫。你們能介紹一些同時使用所有這些程序庫的用例嗎?

Malak:在書里關于機器學習的一章中,我們描述了在MLlib中使用GraphX的方法,但是其中所提及的方法都是批處理應用。類似于Spark中的任何其它對象,在GraphX和GraphFrames中圖也是不可變的對象,不可以在圖中增量地添加邊或節點。雖然Spark Streaming也是基于不可變數據,但是它通過實現對關系數據的小型批處理方法使得流數據處理成為可能,小型批處理實現了類似于微型關系表的功能,這種微型表比微型圖更加有用。在《Spark GraphX in Action》一書出版后,GraphX的創立者Ankur Dave在Spark峰會上展示了一個稱為Tegra的研究項目,該項目為實現對增量流數據的更新,重寫了GraphX的代碼(該項目與Spark Streaming無關)。但是我并不相信當前Tegra的代碼已經公開可用。

East:在線欺詐檢測就是這樣的一個領域??紤]到欺詐攻擊的快速演變特性,預測分析需要使用最近五分鐘或者更短時間內所生成的特性。此外將圖模型加入到特征混合中的方法,具有實現更加有效的預測算法的潛力。

比GraphX更加高效的技術

Malak:一個原則就是審慎地掌控緩存和RDD血統(lineage)。鑒于GraphX程序多為實現迭代運算,該原則對于性能問題是尤其重要的。其它一些典型的Spark技術對性能優化也有效,例如選取適當的序列化程序。

East:當然首要的是了解Spark的工作機制,以及如何對進程進行監控以了解系統運行狀態。Spark提供的基于Web的GUI可以實時展示系統運行狀態,為此必須了解如何最大化地去使用這些工具。程序有很多不同的優化方向,例如緩存、序列化、監測點等,但是理想情況下只有在你理解你的應用是如何執行的,才可以應用這些優化方向。

Spark GraphX程序庫實現中還有哪些缺失特性?

Malak:書中第八章專用于闡述“缺失的算法”,其中包括:PDF文件的讀取、圖的合并、孤立節點的濾除、全局聚類參數的計算等。此外,為加速GraphX程序運行,GraphX的創建者Ankur Dave建立了一個稱為IndexedRDD的程序包。該程序包尚未集成到Apache Spark的發布版本中,因而在某種程度上也可以說是GraphX所“缺失”的。在第八章中我們展示了如何將IndexedRDD集成到GraphX程序中,以實現程序性能的提高。

East:可能協同使用Spark Streaming時需要對圖的增量更新的支持,所以大家時常會提出需要此特性。鑒于當前GraphX的數據結構是不可變的,因而增量更新意味著重新創建整個圖,這是一個十分耗時的過程。

圖數據處理領域中未來趨勢

Malak:一個發展趨勢將會是同時可處理OLAP和OLTP類型應用的圖系統。在上面提到過我在2016年6月Spark峰會上給出的頻譜圖,其中很明顯可以看出NoSQL圖數據庫在對整個頻譜的覆蓋上遙遙領先。但是對于哪一種特定的NoSQL圖數據庫將會成為最終勝出者的問題,Neo4j、Turi(或Dato、GraphLab)、OrientDB、Titan、Oracle PGX等都是潛在的勝出者。其中GraphX的一個顯著優勢是,對于已經部署了Spark集群的系統,無需再付出額外的安裝和管理代價。而當前Spark集群已在很多公司中得以部署。因而與Spark的集成將會成為影響任何未來可能處于統治地位的圖技術的關鍵因素。

East:我認為有兩個領域值得密切關注。第一個領域是在圖數據庫與圖處理架構間的緊密集成。這可通過Neo4j這樣的圖數據庫與Spark這樣的圖處理系統間的無縫互操作實現,或許這些功能也可出現在同一產品中。

另一個領域是圖算法與主流機器學習算法兩者間更加緊密地集成。當前一些程序庫只是側重于其中的一方(GraphX也僅是與Spark機器學習程序庫松散地集成)。事實上,可經??吹接脠D來替代表示稀疏數據矩陣。

Robin還談及了圖數據處理的方法。

East: 如果你習慣于使用關系數據庫進行傳統數據處理,那么可能需要一段時間去理解使用基于圖的方法進行數據建模。如果你固步自封,那么很快就會看到圖結構的應用將無所不在。

關于采訪嘉賓:

Michael Malak是《Spark GraphX In Action》一書的主要作者,他自2013年初以來,已在兩家《財富》世界200強企業中開展了Spark解決方案實施。在企業能采購到具有適合功能的商業產品之間,他可以做編程實現。

Robin East曾作為大型企業顧問工作超過15年,現在是Worldpay公司的數據科學家。

責任編輯:未麗燕 來源: 36大數據
相關推薦

2016-12-01 10:44:00

Teradata數據分析

2011-12-09 11:02:52

NoSQL

2021-11-23 20:54:34

AI 生態系統

2015-06-08 12:44:58

大數據InterlAMPCamp

2013-06-07 09:59:53

大數據移動生態系統

2015-04-01 11:23:23

2010-05-12 11:16:00

SAP

2013-11-04 16:57:21

Hadoop大數據Hadoop生態系統

2017-05-10 16:10:28

Kafka大數據數據庫

2019-01-13 15:00:52

區塊鏈生態系統

2009-12-25 14:49:55

2011-05-19 15:15:39

Oracle生態系統

2012-12-24 10:29:42

大數據生態系統數據庫451Research

2014-12-07 15:46:20

云計算虛擬化

2022-09-14 11:40:30

大數據物聯網

2014-11-05 10:13:51

TeradataQueryGrid

2010-06-03 18:59:59

未來網絡MX 3D路由器Juniper

2020-06-02 21:02:48

物聯網硬件威脅物聯網安全

2024-01-15 00:07:08

JS生態系統

2017-08-02 13:08:30

物聯網生態系統邊緣計算
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩一区二区三区在线播放 | 成人免费视频 | 粉嫩一区二区三区性色av | 欧美成年网站 | 日本久久www成人免 成人久久久久 | 欧美日韩精品综合 | 请别相信他免费喜剧电影在线观看 | 欧美一区二区三区在线观看视频 | 亚洲一级二级三级 | 黄色大片免费观看 | 日韩欧美一区二区三区四区 | 中文字幕一二三 | 亚洲欧美国产一区二区三区 | 91麻豆产精品久久久久久夏晴子 | 日本视频免费观看 | 亚洲精品一 | 欧美午夜精品久久久久久浪潮 | 日本精品一区二区三区在线观看 | 青青草精品视频 | 毛片在线看片 | 国产一区免费 | 奇米超碰在线 | 国产一区二区三区www | 中文字幕乱码一区二区三区 | 久久专区 | 欧美在线a| 亚洲成人日韩 | 日韩在线播放第一页 | 自拍偷拍第一页 | 蜜桃视频在线观看免费视频网站www | 成人在线播放网址 | 综合欧美亚洲 | 精品国产一区二区三区久久久蜜月 | www.久久久.com | 国产剧情一区 | 999精品在线观看 | 羞羞的视频在线观看 | 99久久精品免费视频 | 在线日韩欧美 | 欧美男人天堂 | 国产欧美精品一区二区三区 |