在庞大的数据集上创建唯一的节点和关系NEO4J

时间:2016-05-03 19:57:38

标签: csv neo4j cypher

我的问题与此非常相似: How to create unique nodes and relationships by csv file imported in neo4j? 我有一个大约250万行的文本文件,有两列,每列都是节点ID:

1234 345
1234 568
345 984
... ...

每一行代表一种关系(因此有250万个关系):first_column nodeid->跟进 - > second_column nodeid。此文件中有大约80,000个唯一节点。

根据上面的链接,我做了:

USING PERIODIC COMMIT 1000
LOAD CSV FROM 'file:///home/user_name/Desktop/bigfile.csv' AS line FIELDTERMINATOR ' '
MERGE (n:Userid { id: toInt(line[0]) })
WITH line, n
MERGE (m:Userid { id: toInt(line[1]) })
WITH m,n
MERGE (n)-[:FOLLOWS]->(m)

我假设这段代码

  • 创建节点n或m(如果它不存在)(如果它存在则找到它),并创建从n到m的关系。
  • 如果n或m存在并且已经有许多指向其他节点的边缘(关系),那么这只会添加从n到m的另一条边(当它已经存在时不创建一个全新的节点)

我的主要问题是我想知道如何更快地完成这个过程。 这是在Ubuntu上完成的,我在conf / neo4j-wrapper.conf文件中将内存值从512更改为2048 MB。 (我可以在虚拟机上增加最大值)

我应该尝试使用导入工具吗? 基于本网站上的示例,neo4j.com/developer/guide-import-csv/在“超级快速批量导入器用于巨大数据集”下,

./bin/neo4j-import --into mydatabase.db --id-type INTEGER \
                   --nodes allnodes.csv \
                   --delimiter " " \
                   --relationships:FOLLOWS bigfile.csv

要做到这一点,我需要重新格式化文件,以便: allnodes.csv显示

userID:ID(Userid)
1234
5678
...

并且bigfile.csv显示

:START_ID(Userid)   :END_ID(Userid)
1234                 345
1234                 568
345                  984
*Two columns delimited by space*

当我运行此导入时,我收到此错误:

Input error: Expected '--nodes' to have at least 1 valid item, but had 0 []
Caused by:Expected '--nodes' to have at least 1 valid item, but had 0 []
java.lang.IllegalArgumentException: Expected '--nodes' to have at least 1 valid item, but had 0 []

如何修复此错误?对于csv文件,我是否将它们放在运行此命令的同一文件夹中(neo4j文件夹)?

1 个答案:

答案 0 :(得分:2)

您的命令行可能包含两个CSV文件的错误路径。