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

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

基于DataFrame的圖處理庫GraphFrames

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

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

基于DataFrame的圖處理庫GraphFrames下載

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

      發(fā)表評論

      用戶評論
      評價:好評中評差評

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

      ?