Neo4j或GraphX/Giraph选择什么?

Neo4j或GraphX/Giraph选择什么?,neo4j,giraph,spark-graphx,Neo4j,Giraph,Spark Graphx,刚刚开始我对图形处理方法和工具的探索。我们基本上做的是——计算一些标准指标,如pagerank、聚类系数、三角形计数、直径、连通性等。过去我们对倍频程很满意,但当我们开始处理具有10^9个节点/边的图时,我们卡住了 因此,可能的解决方案可以是使用Hadoop/Giraph、Spark/GraphX、Neo4j等构建的分布式云 但既然我是一个初学者,有人能建议我到底应该选择什么吗?我没有发现何时使用Spark/GraphX和何时使用Neo4j的区别?现在我考虑Skp/Grxx,因为它有更多的Pyt

刚刚开始我对图形处理方法和工具的探索。我们基本上做的是——计算一些标准指标,如pagerank、聚类系数、三角形计数、直径、连通性等。过去我们对倍频程很满意,但当我们开始处理具有10^9个节点/边的图时,我们卡住了

因此,可能的解决方案可以是使用Hadoop/Giraph、Spark/GraphX、Neo4j等构建的分布式云

但既然我是一个初学者,有人能建议我到底应该选择什么吗?我没有发现何时使用Spark/GraphX和何时使用Neo4j的区别?现在我考虑Skp/Grxx,因为它有更多的Python一样的语法,而NeN4J有自己的密码。neo4j中的可视化很酷,但在如此大规模的情况下并不有用。我不明白是否有理由使用额外级别的软件(neo4j)或仅使用Spark/GraphX?因为我知道neo4j不会像使用纯hadoop、Giraph、GraphX或Hive那样节省那么多时间


谢谢。

GraphX更像是一个实时处理框架,用于以图形形式表示的数据。通过GraphX,您可以使用需要大量处理能力(RAM和CPU)的各种算法,通过neo4j,您可以(可靠地)持久化和更新这些数据。这就是我的建议

我确信@kennybastani在这方面取得了一些非常有趣的进步,你可以看看他的解决方案。它还以docker图像的形式发布,所以你可以用棍子戳它,自己看看你是否喜欢它

此映像使用ApacheSpark部署了一个容器,并使用GraphX 对从Neo4j导出的子图执行ETL图分析。这个 分析结果应用于Neo4j中的数据 数据库


Neo4j:我没有用过它,但我认为它在一台机器上完成了所有的图形计算(比如pagerank)。那能处理你的数据集吗?这可能取决于整个图形是否适合内存,如果不适合,它处理磁盘数据的效率如何。它可能会遇到与倍频程相同的问题


Spark GraphX:GraphX将图形数据(顶点和边)跨计算机集群进行分区。这为您提供了计算中的水平可伸缩性和并行性。您可能需要考虑一些事情:它现在只有一个scalaapi(还没有Python)。它可以实现PageRank、triangle count和连接的组件,但是您可能需要使用提供的graph API(例如pregel)自己实现集群系数和直径。《编程指南》中列出了一系列受支持的算法:

Neo4J:它是一个图形数据库,可帮助识别通常来自磁盘的关系和实体数据。它的受欢迎程度和选择都在这里给出。但是,当它需要处理非常大的数据集和实时处理以生成图形结果/表示时,它需要水平扩展。在这种情况下,Neo4J与Apache Spark的组合将

是对Neo4J进行扩展的分布式图形处理平台。它使用MessageBroker将图形处理作业分发到ApacheSparkGraphx模块


GraphX:是Spark中用于图形和图形并行计算的新组件。在较高的层次上,GraphX通过引入一种新的图抽象来扩展Spark RDD:一种属性附加到每个顶点和边的有向多重图。它支持多种图形算法

结论: 始终建议使用Neo4j和

对于实时处理和处理大型数据集,请将neo4j与GraphX一起使用。

对于简单的持久性和显示简单图形显示的实体关系,请使用独立的neo4j。

使用“neo4j with GraphX”是什么意思?你的意思是同时使用它们吗?如何以及为什么?使用neo4j火花连接器是可行的,我提供了链接作为答案。