当前位置: 首页 > 知识库问答 >
问题:

neo4j中的大数据导入

顾池暝
2023-03-14

我正在导入大约1200万个节点和1300万个关系的数据。

是否可以在短时间内直接从sql导入这些数据,因为neo4j以其快速处理大数据而闻名?有什么建议或帮助吗?

以下是CSV使用的加载(数字上的索引(num)):

USING PERIODIC COMMIT 50000 load csv with headers from "file:c:/Users/hasham munir/Desktop/Numbers/CRTest2/Numbers.csv" 
AS csvLine fieldterminator ';' 
Merge (Numbers:Number {num: csvLine.Numbers}) return * ; 

USING PERIODIC COMMIT 50000 load csv with headers from "file:c:/Users/hasham munir/Desktop/Numbers/CRTest2/Level1.csv" 
AS csvLine fieldterminator ';' 
MERGE (TermNum:Number {num: csvLine.TermNum}) 
MERGE (OrigNum:Number {num: (csvLine.OrigNum)}) 
MERGE (OrigNum)-[r:CALLS ]->(TermNum) return * ;

共有1个答案

雍俊远
2023-03-14

要多长时间?

给大家一个参考,我的db大约是4M节点,65万个唯一关系,~10M-15M属性(没有那么大,但应该提供一个想法)。加载节点文件+设置多个标签,然后加载关系文件+设置关系(都是通过加载CSV)不到10分钟。这也是在一台电脑上完成的,但如果你的电脑要花几个小时,我会做一些调整。

我的建议如下:

“num”字段是唯一的吗?如果是,考虑添加以下约束(注意:这也将创建索引,因此不需要单独创建索引)。我认为这可能会加速合并(我不确定这一点),尽管参见下一点。

创建约束(numbers:number)断言numbers.num是唯一的;

如果num字段是唯一的,并且这是一个全新的数据库(即,当您运行这个脚本时,您是从零开始的),那么调用CREATE来创建节点,而不是MERGE(仅用于创建节点)。

这可能已经过时,但提供了一些关于Windows和Linux之间的不同设置和差异的背景知识。
http://blog.bruggen.com/2014/02/some-neo4j-import-tweaks-what-and-where.html

Windows和Linux之间的这些差异本身在不同版本之间发生了变化(如下面的链接所示)
Cypher MATCH query speed,
https://stackoverflow.com/a/29055966/4471711

Michael上面的回答似乎表明,如果您没有使用Neo4j运行java应用程序,您不需要担心堆(-xmx),但是考虑到我看到的其他信息,我认为这似乎不对,但可能所有其他信息都在2.2之前。

我也经历过这些。http://neo4j.com/docs/stable/configuration.html

因此,我所做的就是将heap(neo4j.vmoptions中的-xmx)和pagecache都设置为32G。

 类似资料:
  • 我正在使用数据库和。现在,我想导入相当大的数据集,因此我研究了的批插入功能。 经过我的研究,我发现: 用于嵌入式数据库:http://docs.neo4j.org/chunked/stable/batchinsert.html以及使用它的Michael Hunger项目:https://github.com/jexp/batch-import/ REST批处理终结点:http://docs.neo

  • 我有一个庞大的CA的csv数据集。7GB,它有不同类型的列:string和Float。那么将其导入到Neo4J中的超快解决方案是什么呢? 我也尝试使用neo4j-admin导入工具,但每次我都被以下错误所困扰: Invoke-Neo4jAdmin:c:\users\shafigh.neo4jdesktop\neo4jdatabases\database-417e361b-f273-496c-983

  • 我正试图利用我的spring数据Neo4J4.0中的时间树库。0项目。 如本页所述,https://github.com/graphaware/neo4j-timetree,我编辑了我的neo4j。属性文件以启用自动事件附加,将时间树依赖项添加到my gradle,并在具有长数据类型的事件节点中设置属性“creationDate”。尽管一切看起来都应该如此,但它仍然没有创建任何时间树。 以下是我的

  • 我找到了关于如何计算neo4j数据库大小的以下信息:https://neo4j.com/developer/guide-sizing-and-hardware-calculator/#_disk_storage

  • 我有以下SDN 4节点实体: 在这个实体内部,我添加了属性并声明了一个索引。 现在,我将按产品名称实现不区分大小写的搜索。 我创建了一个SDN 4存储库方法: 为了搜索产品,我使用以下密码: 我认为索引在这种情况下不能有效地工作,因为我小写了字符串。 Neo4j/SDN 4中使索引在这里工作的正确方法是什么?