我使用 Neo4J 实现了一个内容推荐引擎。我喜欢 Cypher,并且发现图形数据库很直观。
考虑扩展到更大的数据集,我不相信 No4J + Cypher 会表现出色。Spark 有 GraphX 项目,我过去没有使用过。
有人从 Neo4J 切换到 Spark GraphX 吗?除了可扩展性之外,用例是否重叠?或者,GraphX 是否解决了与 Neo4J 完全不同的问题集?
我使用 Neo4J 实现了一个内容推荐引擎。我喜欢 Cypher,并且发现图形数据库很直观。
考虑扩展到更大的数据集,我不相信 No4J + Cypher 会表现出色。Spark 有 GraphX 项目,我过去没有使用过。
有人从 Neo4J 切换到 Spark GraphX 吗?除了可扩展性之外,用例是否重叠?或者,GraphX 是否解决了与 Neo4J 完全不同的问题集?
Neo4j 和 Spark GraphX 旨在解决不同层次的问题,它们是相辅相成的。
它们可以通过 Neo4j 的 Mazerunner 扩展连接:
Mazerunner 是一个 Neo4j 非托管扩展和分布式图形处理平台,可扩展 Neo4j 以执行大数据图形处理工作,同时将结果持久化回 Neo4j。
Mazerunner 使用消息代理将图形处理作业分发到 Apache Spark 的 GraphX 模块。调度代理作业时,会从 Neo4j 导出子图并写入 Apache Hadoop HDFS。
在 Neo4j 将子图导出到 HDFS 后,会通知 Spark 的单独 Mazerunner 服务开始处理该数据。然后,Mazerunner 服务将使用 Scala 和 Spark 的 GraphX 模块启动分布式图形处理算法。GraphX 算法被序列化并分派到 Apache Spark 进行处理。
一旦 Apache Spark 作业完成,结果将作为属性更新的键值列表写回 HDFS,以应用回 Neo4j。
然后 Neo4j 被通知属性更新列表可从 HDFS 上的 Apache Spark 获得。Neo4j 批量导入结果并将更新应用回原始图形。
查看本教程以了解如何将两者结合起来:http: //www.kennybastani.com/2014/11/using-apache-spark-and-neo4j-for-big.html