在海量数据集上创建独特的节点和关系NEO4J

3
我的问题与这个问题非常相似:如何通过导入到neo4j的csv文件创建唯一的节点和关系? 我有一个文本文件,大约有250万行,其中有两列,每一列都是节点ID。
1234 345
1234 568
345 984
... ...

每行代表一种关系(共有250万个关系):第一列节点ID -> FOLLOWS -> 第二列节点ID。该文件中大约有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已经存在并且已经有许多其他边(关系)指向和来自其他节点,那么这只会添加另一个从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个回答

2

你的命令行可能有错误的路径,导致两个CSV文件无法读取。


没错,问题已解决。谢谢! - Tony

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接