【问题标题】:Connector between spark and neo4j containerspark和neo4j容器之间的连接器
【发布时间】:2023-07-12 14:04:01
【问题描述】:

我是 spark 和 neo4j 的新手,需要帮助来设置它们。

我的目标是在 spark 中读取 HDFS 文件并在 neo4j 中放置/表示它。有人可以帮我在 spark 和 neo4j 之间创建一个连接器,但 neo4j 是一个容器吗?在互联网上找到的所有内容中,我有点迷茫,而且我的容器中没有结果。

我正在尝试关注此链接https://github.com/neo4j-contrib/neo4j-spark-connector。但例如,我找不到我的 pom.xml 文件来更改它。我必须创建一个新的并将其放在 neo4j 上吗?

对于这种连接,火花必须在 neo4j 容器内吗?或者它可以在集群中,在容器之外,它们是否相互识别?

任何帮助都是好的!谢谢!

【问题讨论】:

  • 这真的是关于网络的问题,而不是 spark 和 neo4j。

标签: scala apache-spark neo4j containers cluster-computing


【解决方案1】:

您只需要按照自述文件中的说明使用它 - 使用 --packages neo4j-contrib:neo4j-spark-connector:2.4.5-M1 参数启动 spark-shellspark-submit - 它会拉取必要的 jar 并使连接器可用。

Spark 可以(并且应该)在 neo4j 容器之外运行,您需要传递 --conf spark.neo4j.url=Neo4j_URL 来指定 Neo4j 的连接端点,并在必要时通过 --conf spark.neo4j.user=username--conf spark.neo4j.password=password 提供用户名和密码(尽管您也可以在 Neo4j URL 中指定它们...

【讨论】:

  • 我正在按照您的建议启动 spark-shell,就像您告诉我的那样。但是当我做 Neo4jDataFrame.mergeEdgeList(sc, df, ("Name", Seq("name")),("HAPPENED_IN", Seq.empty), ("Age", Seq("age"))) 打印这个错误:错误负载平衡器:无法更新数据库“玛丽亚”的路由表。当前路由表:Ttl 1594170847613,currentTime 1594170848006,路由器 AddressSet=[],写入器 AddressSet=[],读取器 AddressSet=[],数据库 'maria'。我做错了什么?
  • Neo4j 容器是否监听外部端口?