RM新时代网站-首页

您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>數(shù)值算法/人工智能>

基于DataFrame的圖處理庫(kù)GraphFrames

大小:0.3 MB 人氣: 2017-10-11 需要積分:1
? 近日,Databricks和UC Berkeley及MIT一起為Apache Spark設(shè)計(jì)了一個(gè)圖處理庫(kù)——GraphFrames。它既能利用DataFrame良好的擴(kuò)展性和強(qiáng)大的性能,同時(shí)也為Scala、JavaPython提供了統(tǒng)一的圖處理API。
  GraphFrames
  與Apache Spark的GraphX類似,GraphFrames支持多種圖處理功能,但得益于DataFrame因此GraphFrames與GraphX庫(kù)相它有著下面幾方面的優(yōu)勢(shì):
  統(tǒng)一的 API: 為Python、Java和Scala三種語(yǔ)言提供了統(tǒng)一的接口,這是Python和Java首次能夠使用GraphX的全部算法。強(qiáng)大的查詢功能:GraphFrames使得用戶可以構(gòu)建與Spark SQL以及DataFrame類似的查詢語(yǔ)句。圖的存儲(chǔ)和讀?。篏raphFrames與DataFrame的數(shù)據(jù)源完全兼容,支持以Parquet、JSON以及CSV等格式完成圖的存儲(chǔ)或讀取。
  在GraphFrames中圖的頂點(diǎn)(Vertex)和邊(edge)都是以DataFrame形式存儲(chǔ)的,所以一個(gè)圖的所有信息都能夠完整保存。
  示例
  比如說(shuō)我們現(xiàn)在有一個(gè)社交關(guān)系圖,每一名用戶也就是頂點(diǎn)由他們之間的關(guān)系所連接,比如下面的這個(gè)例子:
  基于DataFrame的圖處理庫(kù)GraphFrames
  針對(duì)這種社交關(guān)系圖我們可能會(huì)有“誰(shuí)最有影響力”或“應(yīng)不應(yīng)該介紹甲乙之間認(rèn)識(shí)”等問(wèn)題,這類問(wèn)題可以用圖查詢算法來(lái)解決。這里每一名用戶有姓名和年齡兩種屬性,用戶之間的關(guān)系也有不同的類型。
  基于DataFrame的圖處理庫(kù)GraphFrames
  基于DataFrame的圖處理庫(kù)GraphFrames
  簡(jiǎn)單查詢
  使用GraphFrames來(lái)進(jìn)行查詢非常容易。由于頂點(diǎn)和邊都是以DataFrame存儲(chǔ),很多簡(jiǎn)單一些的查詢語(yǔ)句直接就是DataFrame/SQL語(yǔ)句。
  問(wèn):圖中年齡超過(guò)35的用戶總數(shù)是多少?
  g.vertices.filter(“age》35”)
  問(wèn):有兩名以上關(guān)注者的用戶總數(shù)是多少?
  g.inDegrees.filter(“inDegree》=2”)
  復(fù)雜查詢
  GraphFrames兼容GraphX中所有的算法因此對(duì)于復(fù)雜查詢也能夠很好地支持。比如我們想找出圖中最重要的用戶就可以用pageRank函數(shù):
  results = g.pageRank(resetProbability=0.15, maxIter=10) display(results.vertices)
  GraphFrames還加入了廣度優(yōu)先搜索BFS和模式發(fā)現(xiàn)Motif finding兩種新算法。
  再舉一個(gè)例子,比如我們想給用戶推薦關(guān)注 的人就可以尋找圖中滿足下面這個(gè)條件的ABC三個(gè)用戶:A關(guān)注B,B關(guān)注C但A并未關(guān)注C。代碼如下:
  # Motif: A-》B-》C but notA-》C results = g.find(“(A)-[]-》(B); (B)-[]-》(C); ?。ˋ)-[]-》(C)”) # Filterout loops (withDataFrame operation) results = results.filter(“A.id != C.id”) # Selectrecommendations forA tofollow C results = results.select(“A”, “C”) display(results)
  基于DataFrame的圖處理庫(kù)GraphFrames
  其他GraphFrames支持的算法還有:排序、最短路徑、連通分量、強(qiáng)連通分量、三角計(jì)數(shù)和標(biāo)簽傳播LPA。
  GraphFrames與GraphX的集成
  GraphFrames可以實(shí)現(xiàn)與GraphX的完美集成。兩者之間相互轉(zhuǎn)換時(shí)不會(huì)丟失任何數(shù)據(jù)。
  val gx: Graph[Row, Row] = g.toGraphX() val g2: GraphFrame = GraphFrame.fromGraphX(gx)
  欲了解更多GraphFrames和GraphX之間的轉(zhuǎn)換請(qǐng)參閱GraphFrames API文檔。
  小結(jié)
  DataFrames針對(duì)圖所做出的優(yōu)化還遠(yuǎn)未完成,我們?cè)谙乱话姹局羞€會(huì)加入更多的功能。
?

非常好我支持^.^

(0) 0%

不好我反對(duì)

(0) 0%

基于DataFrame的圖處理庫(kù)GraphFrames下載

相關(guān)電子資料下載

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?
      RM新时代网站-首页