在neo4j中,用于从具有数千行的大型csv文件创建关系的合并操作会变慢吗?

时间:2019-08-06 19:43:19

标签: neo4j neo4j-apoc

我有包含数千行的文件,其中csv文件的大小为500mb至3.1 gb。我首先完成批量导入,花了几分钟的时间将所有数据加载到图形数据库中。现在出于我的项目目的,我需要定期上传数据。所以我用neo4j bolt驱动程序编写了一个python脚本,所有常规节点都在其中创建,更新,删除。从文件创建关系也适用于较小的数据(原型)。当我要从大文件创建关系时会发生问题。尽管并行性有效,但它变得非常慢。我的CPU 32核心已完全使用。我已经通过HTOP对其进行了检查。对于批量大小为100-1000的内核,已正确使用。我尝试了10000-100000的批量大小,在这种情况下,并行性不起作用。这是我用于创建加载csv的查询代码

"""CALL apoc.periodic.iterate('
load csv with headers from "file:///x.csv" AS row return row 
','
MERGE (p1:A {ID: row.A})
MERGE (p2:B {ID: row.B})
WITH p1, p2, row
CALL apoc.create.relationship(p1, row.RELATIONSHIP, {}, p2) YIELD rel  return rel
',{batchSize:10000, iterateList:true, parallel:true})"""

对于少量数据它完全可以正常工作。但是当处理大量数据时,它变得非常慢。创建10个关系需要花费39秒的时间。就我而言,合并操作效率低下还是我在这里缺少一些技巧。请帮助我解决。我在RAM大小为240G的EC2实例上工作。我已经尝试过热身。将其调整为192G,但没有观察到明显的变化

0 个答案:

没有答案