Mazerunner是neo4J图库扩展

banq 14-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修改过]