【问题标题】:How to find connected component of a large graph in Neo4j?如何在 Neo4j 中找到大图的连通分量?
【发布时间】:2021-12-28 15:58:36
【问题描述】:
  1. 我在 Neo4j 中有一个巨大的图表,它由属于 12 个标签的 52639796 个节点和 119,343,754 条边组成。我想找到这个图的弱连接分量。但是,每次我尝试将整个投影到内存中时,它都会给出“无法调用过程gds.graph.create.cypher:原因:java.lang.OutOfMemoryError:Java 堆空间”。您对如何找到整个图的弱连通分量有什么建议吗?

  2. 我试图找到对图表进行采样的方法。但是,现有工具似乎不适用于 Neo4j 图。有什么办法可以得到整个图的随机样本?

如果我能在这方面得到一些建议或推荐,那将意味着很多。

【问题讨论】:

    标签: neo4j graph-data-science


    【解决方案1】:

    首先,对于具有 5000 万个节点的图形,您应该使用原生投影而不是密码投影。您可以使用gds.graph.create.estimate 来估计所需的内存分配。

    总而言之: 1:使用原生投影 2:如果还是内存不足,在neo4j设置中增加堆内存分配

    【讨论】:

    • 谢谢,我尝试了你的建议。我已经为堆内存分配了 16g。但是,在尝试创建整个图的本机投影(通过指定所有节点标签和关系标签)时,它说:“无法调用过程 gds.graph.create:原因:java.lang.IllegalStateException:过程被阻止,因为最小值估计内存 (69 GiB) 超过当前可用内存 (4050 MiB)”。
    • 您是否正在加载一堆节点和 rel 属性?您始终可以通过添加配置 'sudo:true' 来覆盖保护。无论如何,gds 似乎只有 4gb 可用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 2012-05-10
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多