自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Spark生態(tài)系統(tǒng)中的圖數(shù)據(jù)分析知識(shí)

大數(shù)據(jù) Spark
圖結(jié)構(gòu)可有效表示稀疏矩陣,因而圖數(shù)據(jù)分析可用于實(shí)現(xiàn)大數(shù)據(jù)分析。對(duì)于Spark生態(tài)系統(tǒng)中的圖處理系統(tǒng)GraphX,《Spark GraphX in Action》一書(shū)給出了詳細(xì)的教程和典型用例,將教會(huì)讀者如何使用GraphX和GraphFrames進(jìn)行圖分析。本文是Info對(duì)該書(shū)作者的訪談,內(nèi)容包括圖數(shù)據(jù)及分析技術(shù)、GraphX高效程序開(kāi)發(fā)、圖數(shù)據(jù)分析的趨勢(shì)等。

[[173895]]

圖結(jié)構(gòu)可有效表示稀疏矩陣,因而圖數(shù)據(jù)分析可用于實(shí)現(xiàn)大數(shù)據(jù)分析。對(duì)于Spark生態(tài)系統(tǒng)中的圖處理系統(tǒng)GraphX,《Spark GraphX in Action》一書(shū)給出了詳細(xì)的教程和典型用例,將教會(huì)讀者如何使用GraphX和GraphFrames進(jìn)行圖分析。本文是Info對(duì)該書(shū)作者的訪談,內(nèi)容包括圖數(shù)據(jù)及分析技術(shù)、GraphX高效程序開(kāi)發(fā)、圖數(shù)據(jù)分析的趨勢(shì)等。

如何定義圖數(shù)據(jù)?

Michael Malak:就事論事,圖結(jié)構(gòu)看上去并非像股價(jià)圖那樣,而是邊和點(diǎn)的集合。但這只是一種模糊的數(shù)學(xué)抽象。更具體地說(shuō),在書(shū)的第一章中我們將真實(shí)世界中的圖劃分為五類(lèi):網(wǎng)絡(luò)、樹(shù)、類(lèi)RDBMS結(jié)構(gòu)、稀疏矩陣以及其它雜七雜八的結(jié)構(gòu)。

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

圖數(shù)據(jù)分析與傳統(tǒng)數(shù)據(jù)的處理的不同之處

Malak:正如我們?cè)跁?shū)的第一章中所描述的,RDBMS不足以有效地處理圖路徑遍歷運(yùn)算,因?yàn)樵撨\(yùn)算需要進(jìn)行大量的自連接運(yùn)算。用于稀疏矩陣處理是另一個(gè)圖分析展示出良好性能的領(lǐng)域,在書(shū)中機(jī)器學(xué)習(xí)相關(guān)的第七章中對(duì)此有所描述。

East:圖分析事實(shí)上是一系列的實(shí)踐,這些實(shí)踐側(cè)重于對(duì)數(shù)據(jù)條目間關(guān)聯(lián)信息內(nèi)容的描繪。在不同實(shí)體間連接模式可見(jiàn)的情況下,對(duì)不同數(shù)據(jù)間關(guān)聯(lián)建模提供了十分強(qiáng)大的能力。再次使用電話呼叫記錄作為例子,當(dāng)我們對(duì)由不同人所做的不同呼叫而組成的“網(wǎng)絡(luò)”進(jìn)行分析時(shí),就可以去構(gòu)建具有不同交互類(lèi)型的圖形。在一些情況下,我們可以使用數(shù)據(jù)的結(jié)構(gòu)信息對(duì)不同的行為進(jìn)行分隔(例如區(qū)分犯罪與否)。

圖數(shù)據(jù)分析是如何促進(jìn)大數(shù)據(jù)和預(yù)測(cè)分析?

Malak:對(duì)于已有的大數(shù)據(jù),首先你需要從數(shù)據(jù)中抽取出結(jié)構(gòu)化數(shù)據(jù),通常是關(guān)系模型或者圖模型。一些問(wèn)題可自然地表示為圖問(wèn)題,例如地圖中的路由查找、社會(huì)網(wǎng)絡(luò)分析(尤其是在一個(gè)社會(huì)網(wǎng)絡(luò)圖中發(fā)現(xiàn)意見(jiàn)領(lǐng)袖)。所有的機(jī)器學(xué)習(xí)都是關(guān)于做預(yù)測(cè)的,而在書(shū)中關(guān)于機(jī)器學(xué)習(xí)的一章也是內(nèi)容最長(zhǎng)的。這一章中展示了一些使用圖數(shù)據(jù)上機(jī)器學(xué)習(xí)的方法。

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

GraphFrames的工作機(jī)制

Malak:作為Apache Spark生態(tài)系統(tǒng)的一部分,GraphX是Spark的官方圖處理系統(tǒng)。即使在Spark 2.0中也是如此。GraphX基于RDD技術(shù),每條邊和每個(gè)節(jié)點(diǎn)均由一個(gè)RDD表示。GraphFrames作為spark-packages.org所提供的附加軟件,依然是基于DataFrames的。

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

GraphFrames還具有使用Neo4j Cypher語(yǔ)言的子集和DataFrames對(duì)SQL語(yǔ)言的支持進(jìn)行組合查詢(xún)的功能。最后一點(diǎn),GraphFrames提供了對(duì)Python和Java語(yǔ)言的綁定,這對(duì)于喜歡Python語(yǔ)言和更適應(yīng)Java開(kāi)發(fā)的程序員是一個(gè)喜訊。但是GraphX的痛點(diǎn)在于僅官方支持Scala語(yǔ)言(雖然在書(shū)中我們也展示了如何跨域數(shù)以百計(jì)的關(guān)卡實(shí)現(xiàn)在開(kāi)發(fā)中對(duì)Java的支持)。我們?cè)诘谑轮泻w了GraphFrames相關(guān)內(nèi)容,并給出了一個(gè)有趣的例子,就是去查找本應(yīng)存在于Wikipedia中的缺失鏈接。

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

GraphFrames中添加了若干GraphX所不具有的關(guān)鍵特性,例如查詢(xún)結(jié)構(gòu)、Python屬性函數(shù)(Property)和Java API。無(wú)論如何,從一種表示方式轉(zhuǎn)化為另一種都是可能的,事實(shí)上這也是PageRank、連通分量等標(biāo)準(zhǔn)算法的實(shí)現(xiàn)方法。

四種不同的圖數(shù)據(jù)相關(guān)的概念

記者:你們能介紹一下NoSQL圖數(shù)據(jù)庫(kù)、圖數(shù)據(jù)查詢(xún)、圖數(shù)據(jù)分析和圖數(shù)據(jù)可視化這四種圖數(shù)據(jù)相關(guān)的概念嗎?

Malak:我在2016年6月的Spark峰會(huì)上做過(guò)一個(gè)報(bào)告,報(bào)告中對(duì)圖技術(shù)給出了一個(gè)很好的“頻譜”展示。頻譜圖的一端是真正OLTP風(fēng)格的NoSQL圖數(shù)據(jù)庫(kù),包括Neo4j、Titan、OrientDB等。另一端是OLAP風(fēng)格的圖處理和數(shù)據(jù)分析系統(tǒng),包括GraphX、GraphLab等。圖查詢(xún)涉及的范圍處于該頻譜圖的中央。NoSQL圖數(shù)據(jù)庫(kù)和GraphFrames也都可以進(jìn)行查詢(xún),但是GraphX在查詢(xún)方面非常有局限性。

無(wú)論OLTP風(fēng)格圖數(shù)據(jù)庫(kù)或是OLAP風(fēng)格的圖處理和分析系統(tǒng),都可以應(yīng)用圖數(shù)據(jù)庫(kù)可視化技術(shù),所以圖數(shù)據(jù)可視化的領(lǐng)域范圍與該頻譜圖是相互正交的。在本書(shū)中我們論及兩種特定的技術(shù):Gephi和組合使用Zpeppelin與d3.js。需要指出的是,圖可視化的用例與關(guān)系數(shù)據(jù)可視化的用例之間有很大的差異。關(guān)系數(shù)據(jù)可視化的目標(biāo)是對(duì)數(shù)據(jù)取得直觀的了解,而圖數(shù)據(jù)可視化的目標(biāo)在于對(duì)數(shù)據(jù)或算法進(jìn)行調(diào)試。

East:正如Michael已提到的,現(xiàn)在已有一些不同的圖數(shù)據(jù)庫(kù),它們滿足了一系列不同用例的需求。值得強(qiáng)調(diào)的是GraphX提供了內(nèi)存中的圖處理功能,而非數(shù)據(jù)庫(kù)功能??梢允褂肎raphX從一系列數(shù)據(jù)源中構(gòu)建基于內(nèi)存的圖,這樣的數(shù)據(jù)源中可能包括對(duì)NoSQL圖數(shù)據(jù)庫(kù)的查詢(xún)。實(shí)際上后一種組合的潛在應(yīng)用前景巨大。

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

最佳解決方案用例

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

Malak:應(yīng)用GraphX的典型代表性算法是PageRank。一些用例使用或者拓展了RageRank算法,這樣的用例超越了Google將PageRank用于搜索排序的應(yīng)用,可用于在論文引用網(wǎng)絡(luò)(書(shū)中給出了一個(gè)實(shí)例)和社會(huì)網(wǎng)絡(luò)這樣類(lèi)型的圖中查找意見(jiàn)領(lǐng)袖。在書(shū)中我們還展示了如何將PageRank轉(zhuǎn)化為另一種稱(chēng)為T(mén)runcated Page Rank的算法,這種算法可用于發(fā)現(xiàn)垃圾網(wǎng)頁(yè)鏈接農(nóng)場(chǎng)。

除了PageRank之外,我們?cè)跁?shū)中還給出了一些經(jīng)典圖算法的實(shí)現(xiàn),這些經(jīng)典圖算法提出于半個(gè)世紀(jì)之前,其中包括了最短路徑(例如地理空間映射)、旅行推銷(xiāo)員問(wèn)題和最小生成樹(shù)等算法。最小生成樹(shù)問(wèn)題聽(tīng)上去很學(xué)術(shù),但是在書(shū)中我們展示了它的一個(gè)有意思的應(yīng)用,就是輔以MLlib提供的word2vec算法,從語(yǔ)料庫(kù)中自動(dòng)建立層次化概念分類(lèi)結(jié)構(gòu)。一些Spark中的機(jī)器學(xué)習(xí)算法實(shí)際上是GraphX實(shí)現(xiàn)的,其中包括:一種類(lèi)似于ALS可用于推薦系統(tǒng)的算法SVD++、冪迭代聚類(lèi)(Power Iteration Clustering,PIC)等。在書(shū)中給出了使用PIC算法實(shí)現(xiàn)計(jì)算機(jī)視覺(jué)中圖像分割的例子。

East:在數(shù)據(jù)間關(guān)聯(lián)與數(shù)據(jù)項(xiàng)本身同等重要的情況下,就應(yīng)該考慮使用圖方法進(jìn)行數(shù)據(jù)處理。雖然有時(shí)使用傳統(tǒng)方法也能實(shí)現(xiàn)這種圖處理,但是這樣的實(shí)現(xiàn)方法很快會(huì)變成一種繁重工作,因?yàn)榧词箤?duì)于十分簡(jiǎn)單的結(jié)構(gòu),這樣的方法也需要付出很大的努力才能實(shí)現(xiàn)。與之相對(duì)比的是,對(duì)于互連的數(shù)據(jù),GraphX等圖處理系統(tǒng)提供了非常自然的數(shù)據(jù)表示和交互方式。

Spark機(jī)器學(xué)習(xí)程序庫(kù)的用例

記者:通過(guò)提供面向批處理、流數(shù)據(jù)和圖數(shù)據(jù)處理的程序庫(kù),Spark給出了一種統(tǒng)一的大數(shù)據(jù)處理架構(gòu)。Spark還提供了機(jī)器學(xué)習(xí)程序庫(kù)。你們能介紹一些同時(shí)使用所有這些程序庫(kù)的用例嗎?

Malak:在書(shū)里關(guān)于機(jī)器學(xué)習(xí)的一章中,我們描述了在MLlib中使用GraphX的方法,但是其中所提及的方法都是批處理應(yīng)用。類(lèi)似于Spark中的任何其它對(duì)象,在GraphX和GraphFrames中圖也是不可變的對(duì)象,不可以在圖中增量地添加邊或節(jié)點(diǎn)。雖然Spark Streaming也是基于不可變數(shù)據(jù),但是它通過(guò)實(shí)現(xiàn)對(duì)關(guān)系數(shù)據(jù)的小型批處理方法使得流數(shù)據(jù)處理成為可能,小型批處理實(shí)現(xiàn)了類(lèi)似于微型關(guān)系表的功能,這種微型表比微型圖更加有用。在《Spark GraphX in Action》一書(shū)出版后,GraphX的創(chuàng)立者Ankur Dave在Spark峰會(huì)上展示了一個(gè)稱(chēng)為T(mén)egra的研究項(xiàng)目,該項(xiàng)目為實(shí)現(xiàn)對(duì)增量流數(shù)據(jù)的更新,重寫(xiě)了GraphX的代碼(該項(xiàng)目與Spark Streaming無(wú)關(guān))。但是我并不相信當(dāng)前Tegra的代碼已經(jīng)公開(kāi)可用。

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

比GraphX更加高效的技術(shù)

Malak:一個(gè)原則就是審慎地掌控緩存和RDD血統(tǒng)(lineage)。鑒于GraphX程序多為實(shí)現(xiàn)迭代運(yùn)算,該原則對(duì)于性能問(wèn)題是尤其重要的。其它一些典型的Spark技術(shù)對(duì)性能優(yōu)化也有效,例如選取適當(dāng)?shù)男蛄谢绦颉?/p>

East:當(dāng)然首要的是了解Spark的工作機(jī)制,以及如何對(duì)進(jìn)程進(jìn)行監(jiān)控以了解系統(tǒng)運(yùn)行狀態(tài)。Spark提供的基于Web的GUI可以實(shí)時(shí)展示系統(tǒng)運(yùn)行狀態(tài),為此必須了解如何最大化地去使用這些工具。程序有很多不同的優(yōu)化方向,例如緩存、序列化、監(jiān)測(cè)點(diǎn)等,但是理想情況下只有在你理解你的應(yīng)用是如何執(zhí)行的,才可以應(yīng)用這些優(yōu)化方向。

Spark GraphX程序庫(kù)實(shí)現(xiàn)中還有哪些缺失特性?

Malak:書(shū)中第八章專(zhuān)用于闡述“缺失的算法”,其中包括:PDF文件的讀取、圖的合并、孤立節(jié)點(diǎn)的濾除、全局聚類(lèi)參數(shù)的計(jì)算等。此外,為加速GraphX程序運(yùn)行,GraphX的創(chuàng)建者Ankur Dave建立了一個(gè)稱(chēng)為IndexedRDD的程序包。該程序包尚未集成到Apache Spark的發(fā)布版本中,因而在某種程度上也可以說(shuō)是GraphX所“缺失”的。在第八章中我們展示了如何將IndexedRDD集成到GraphX程序中,以實(shí)現(xiàn)程序性能的提高。

East:可能協(xié)同使用Spark Streaming時(shí)需要對(duì)圖的增量更新的支持,所以大家時(shí)常會(huì)提出需要此特性。鑒于當(dāng)前GraphX的數(shù)據(jù)結(jié)構(gòu)是不可變的,因而增量更新意味著重新創(chuàng)建整個(gè)圖,這是一個(gè)十分耗時(shí)的過(guò)程。

圖數(shù)據(jù)處理領(lǐng)域中未來(lái)趨勢(shì)

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

East:我認(rèn)為有兩個(gè)領(lǐng)域值得密切關(guān)注。第一個(gè)領(lǐng)域是在圖數(shù)據(jù)庫(kù)與圖處理架構(gòu)間的緊密集成。這可通過(guò)Neo4j這樣的圖數(shù)據(jù)庫(kù)與Spark這樣的圖處理系統(tǒng)間的無(wú)縫互操作實(shí)現(xiàn),或許這些功能也可出現(xiàn)在同一產(chǎn)品中。

另一個(gè)領(lǐng)域是圖算法與主流機(jī)器學(xué)習(xí)算法兩者間更加緊密地集成。當(dāng)前一些程序庫(kù)只是側(cè)重于其中的一方(GraphX也僅是與Spark機(jī)器學(xué)習(xí)程序庫(kù)松散地集成)。事實(shí)上,可經(jīng)常看到用圖來(lái)替代表示稀疏數(shù)據(jù)矩陣。

Robin還談及了圖數(shù)據(jù)處理的方法。

East: 如果你習(xí)慣于使用關(guān)系數(shù)據(jù)庫(kù)進(jìn)行傳統(tǒng)數(shù)據(jù)處理,那么可能需要一段時(shí)間去理解使用基于圖的方法進(jìn)行數(shù)據(jù)建模。如果你固步自封,那么很快就會(huì)看到圖結(jié)構(gòu)的應(yīng)用將無(wú)所不在。

關(guān)于采訪嘉賓:

Michael Malak是《Spark GraphX In Action》一書(shū)的主要作者,他自2013年初以來(lái),已在兩家《財(cái)富》世界200強(qiáng)企業(yè)中開(kāi)展了Spark解決方案實(shí)施。在企業(yè)能采購(gòu)到具有適合功能的商業(yè)產(chǎn)品之間,他可以做編程實(shí)現(xiàn)。

Robin East曾作為大型企業(yè)顧問(wèn)工作超過(guò)15年,現(xiàn)在是Worldpay公司的數(shù)據(jù)科學(xué)家。

責(zé)任編輯:未麗燕 來(lái)源: 36大數(shù)據(jù)
相關(guān)推薦

2016-12-01 10:44:00

Teradata數(shù)據(jù)分析

2011-12-09 11:02:52

NoSQL

2021-11-23 20:54:34

AI 生態(tài)系統(tǒng)

2013-06-07 09:59:53

大數(shù)據(jù)移動(dòng)生態(tài)系統(tǒng)

2015-06-08 12:44:58

大數(shù)據(jù)InterlAMPCamp

2017-05-10 16:10:28

Kafka大數(shù)據(jù)數(shù)據(jù)庫(kù)

2009-12-25 14:49:55

2019-01-13 15:00:52

區(qū)塊鏈生態(tài)系統(tǒng)

2011-05-19 15:15:39

Oracle生態(tài)系統(tǒng)

2015-04-01 11:23:23

2010-05-12 11:16:00

SAP

2013-11-04 16:57:21

Hadoop大數(shù)據(jù)Hadoop生態(tài)系統(tǒng)

2014-11-05 10:13:51

TeradataQueryGrid

2012-12-24 10:29:42

大數(shù)據(jù)生態(tài)系統(tǒng)數(shù)據(jù)庫(kù)451Research

2010-06-03 18:59:59

未來(lái)網(wǎng)絡(luò)MX 3D路由器Juniper

2020-06-02 21:02:48

物聯(lián)網(wǎng)硬件威脅物聯(lián)網(wǎng)安全

2017-08-02 13:08:30

物聯(lián)網(wǎng)生態(tài)系統(tǒng)邊緣計(jì)算

2022-02-25 11:09:16

區(qū)塊鏈技術(shù)生態(tài)系統(tǒng)

2024-01-15 00:07:08

JS生態(tài)系統(tǒng)

2023-10-11 15:11:08

智能建筑人工智能
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)