使用Spark创建Neo4j图

时间:2018-07-14 10:40:22

标签: apache-spark neo4j cypher

我需要从spark数据帧创建neo4j图,然后将它们存储在Neo4j中。 在搜索时,我找到了项目Cypher for apache Spark来解决我的问题,但是它有a problem in build,因此对我不起作用。 我问是否还有另一种选择?

2 个答案:

答案 0 :(得分:1)

用于Apache Spark / CAPS的Cypher(在撰写本文时)是Neo4j正在开发的更大解决方案的组件。 You can find out more about that here,但简短的答案是您可能要考虑签出更大的解决方案,而不是单独使用CAPS。

您可以选择使用neo4j-spark-connector,它的功能略有不同,但是非常适合从spark-> neo4j中移动数据。您也可以考虑与neo4j user slack建立联系,在那里有人可以回答有关一般方法的问题。

答案 1 :(得分:1)

我使用https://github.com/neo4j-contrib/neo4j-spark-connector来创建和使用Neo4J图形。

我重写mergeEdgeList方法来处理我的Cypher查询,以将我的所有图形都写入Neo4j。

https://github.com/neo4j-contrib/neo4j-spark-connector/blob/master/src/main/scala/org/neo4j/spark/Neo4jDataFrame.scala

棘手,但我成功了。

编辑: 首先,我将Intellij IDEA与Scala插件和MVN一起使用来构建。

我将此添加到我的pom.xml

  <dependency>
        <groupId>neo4j-contrib</groupId>
        <artifactId>neo4j-spark-connector</artifactId>
        <version>2.1.0-M4</version>
        <scope>compile</scope>
    </dependency>

然后,尝试使用具有此列/模式的数据框:

NodeSrc |所有nodeSrc属性[...] |关系|所有关系属性[...] | NodeDest |所有nodeDst attr [...] |

例如Twitter用户并转推。 :

    Neo4jDataFrame.mergeEdgeList(
  MYDATAFRAME,                              // Dataframe 
  ("User", Seq("UserName")),                
  ("Like", Seq("TimeStamp")),
  ("Movie", Seq("MovieName")))

在此代码示例中,MYDATAFRAME是具有特定架构的数据框。