首页 > 解决方案 > Neo4j Graph中如何减少Louvain算法的运行时间和内存占用?

问题描述

这是我的数据: Neo4j 数据

这是 CQL:

"call algo.louvain.stream('','',{weightProperty: 'weight'}) YIELD nodeId,community return algo.getNodeById(nodeId).mno as name ,community","/mno-rel.csv",{});

这是 neo4j 配置:

Neo4j 版本:neo4j-community-3.5.8

当我运行上面的算法时,我需要 5 个小时,并且需要 70 多克的内存。

请帮助我如何减少内存和时间。我非常感谢:D

==================================================== =========================

回答 logisima 的问题:

总存储大小:60.71 GiB

CPU : 40

可用的免费共享缓冲区/缓存总数

内存:125G 114G 1.4G 337M 9.7G 9.8G

debug.log 20-02-05 23:52:54.946+0000 WARN [onkicVmPauseMonitorComponent] 检测到 VM 停止世界暂停:{pauseTime=3882,gcTime=21,gcCount=1}

2020-02-05 23:53:05.327+0000 INFO [onkipProcedures] [algo-1] Louvain 0% 第三轮

2020-02-05 23:53:15.327+0000 INFO [onkipProcedures] [algo-2] Louvain 77% 第三轮

2020-02-05 23:53:25.385+0000 INFO [onkipProcedures] [algo-3] Louvain 10% 第 4 轮

2020-02-05 23:53:35.378+0000 INFO [onkipProcedures] [algo-1] Louvain 90% 第 4 轮

2020-02-05 23:53:45.379+0000 INFO [onkipProcedures] [algo-4] 鲁汶 26% 第 5 轮

2020-02-05 23:53:59.480+0000 INFO [onkipProcedures] [neo4j.BoltWorker-4 [bolt] [/10.3.99.111:49607] ] Louvain 100% 级别:7 个社区:7689984 q:0.9808712031807056

2020-02-05 23:54:03.543+0000 WARN [onkicVmPauseMonitorComponent] 检测到 VM 停止世界暂停:{pauseTime=197,gcTime=202,gcCount=1}

2020-02-05 23:54:07.130+0000 WARN [onkicVmPauseMonitorComponent] 检测到 VM 停止世界暂停:{pauseTime=184,gcTime=243,gcCount=1}

2020-02-05 23:54:21.578+0000 INFO [onkipProcedures] [algo-2] Louvain 0% 第一轮

2020-02-05 23:54:23.528+0000 WARN [onkicVmPauseMonitorComponent] 检测到 VM 停止世界暂停:{pauseTime=366,gcTime=380,gcCount=1}

2020-02-05 23:54:26.352+0000 WARN [onkicVmPauseMonitorComponent] 检测到 VM 停止世界暂停:{pauseTime=121,gcTime=217,gcCount=1}

2020-02-05 23:54:31.579+0000 INFO [onkipProcedures] [algo-1] Louvain 80% 第一轮

2020-02-05 23:54:40.056+0000 WARN [onkicVmPauseMonitorComponent] 检测到 VM 停止世界暂停:{pauseTime=5693,gcTime=0,gcCount=0}

2020-02-05 23:54:41.580+0000 INFO [onkipProcedures] [algo-2] Louvain 98% 第一轮

2020-02-05 23:54:47.314+0000 INFO [onkipProcedures] [neo4j.BoltWorker-4 [bolt] [/10.3.99.111:49607] ] Louvain 100% 级别:8 个社区:7689984 q:-1.0

2020-02-05 23:55:11.177+0000 WARN [onkicVmPauseMonitorComponent] 检测到 VM 停止世界暂停:{pauseTime=5269,gcTime=0,gcCount=0}

标签: neo4jneo4j-apoc

解决方案


我不确定你是否知道,但试试Neo4j Graph Data Science library。它是图形算法库的继承者,已被弃用,应该有更好的性能。查看您提供的其他数据,瓶颈似乎不是 Louvain 算法,而是实际上将结果写回 CSV 文件。也许您可以尝试将结果写回 Neo4j,然后使用 APOC 从 Neo4j 并行获取结果。


推荐阅读