Mazerunner是neo4J相簿擴充套件

banq發表於2014-11-06


Mazerunner 是擴充Neo4j相簿執行大大資料圖計算演算法,支援HDFS 和 Apache Spark.

使用Apache Spark和neo4j大資料圖分析介紹其詳細使用。

Mazerunner使用訊息釋出圖處理任務給Apache Spark的 GraphX模組. 當一個代理任務被髮布以後,從Neo4j輸出子圖寫入到Apache Hadoop HDFS.

當 Neo4j輸出一個子圖subgraph到HDFS以後, 另外一個為Spark服務的Mazerunner將收到提示,可以開始處理資料了。這個 Mazerunner服務將使用Scala和Spark的GraphX模組開始 釋出圖處理演算法,GraphX演算法被序列化分發給Apache Spark進行處理.

一旦Apache Spark的處理工作完成, 結果將被作為一個Key-Value屬性列表寫回HDFS, 用於回頭對Neo4j的更新.

當一個屬性列表在Apache Spark的HDFS上準備就緒,Neo4j將接收到提示,Neo4j會批匯入處理結果,更新原始的圖。

該文還以演員和影片為案例舉例說明了具體用法。

假設如果某個人知道某個演員在某個影片中出演,他就會認識這個演員:
MATCH (a1:Person)-[:ACTED_IN]->(m)<-[:ACTED_IN]-(coActors)
CREATE (a1)-[:KNOWS]->(coActors);

然後我們就可以使用Mazerunner 的PageRank演算法發現最受歡迎的演員,執行:
http://localhost:7474/service/mazerunner/pagerank

這會將PageRank演算法處理結果寫會Neo4J的Person節點的Weight屬性,透過下面語句查詢最受歡迎的演員:
neo4j-sh (?)$ MATCH n WHERE HAS(n.weight) RETURN n ORDER BY n.weight DESC LIMIT 10;
+-----------------------------------------------------------------------+
| n |
+-----------------------------------------------------------------------+
| Node[71]{name:"Tom Hanks",born:1956,weight:4.642800717539658} |
| Node[1]{name:"Keanu Reeves",born:1964,weight:2.605304495549113} |
| Node[22]{name:"Cuba Gooding Jr.",born:1968,weight:2.5655048212974223} |
| Node[34]{name:"Meg Ryan",born:1961,weight:2.52628473708215} |
| Node[16]{name:"Tom Cruise",born:1962,weight:2.430592498009265} |
| Node[19]{name:"Kevin Bacon",born:1958,weight:2.0886893112867035} |
| Node[17]{name:"Jack Nicholson",born:1937,weight:1.9641313625284538} |
| Node[120]{name:"Ben Miles",born:1967,weight:1.8680986516285438} |
| Node[4]{name:"Hugo Weaving",born:1960,weight:1.8515582875810466} |
| Node[20]{name:"Kiefer Sutherland",born:1966,weight:1.784065038526406} |
+-----------------------------------------------------------------------+
10 rows

Tom Hanks是最受歡迎的演員。

[該貼被banq於2014-11-06 10:07修改過]

相關文章