将CSV文件导入neo4j时出现紧急操作员警告

将CSV文件导入neo4j时出现紧急操作员警告,csv,import,neo4j,relationship,Csv,Import,Neo4j,Relationship,我想使用LOAD CSV命令将大约40000个twitter数据集节点从CSV文件导入neo4j CSV文件组织如下所示: id,screenName,tags,avatar,followersCount,friendsCount,lang,lastSeen,tweetId,friends "1969527638","LlngoMakeEmCum_",[ "#nationaldogday" ],"http://pbs.twimg.com/profile_images/53428621788265

我想使用LOAD CSV命令将大约40000个twitter数据集节点从CSV文件导入neo4j

CSV文件组织如下所示:

id,screenName,tags,avatar,followersCount,friendsCount,lang,lastSeen,tweetId,friends
"1969527638","LlngoMakeEmCum_",[ "#nationaldogday" ],"http://pbs.twimg.com/profile_images/534286217882652672/FNmiQYVO_normal.jpeg",319,112,"en",1472271687519,"769310701580083200",[ "1969574754", "1969295556", "1969284056", "1969612214"]
我在neo4j中运行以下代码:

LOAD CSV WITH HEADERS FROM "file:/data.csv" AS row 
WITH row, split(row.friends, ",") AS friends 
UNWIND friends AS friend 
MERGE (p1:Person {id:row.id}) 
MERGE (p2:Person {id:friend}) 
MERGE (p1)-[:FRIEND_WITH]->(p2)
我得到了这个警告:这个查询的执行计划包含了Eager操作符,它强制所有依赖数据在继续之前在主内存中具体化

在执行计划中包含渴望运算符的查询中,对大数据集使用LOAD CSV可能会消耗大量内存,并且可能无法很好地执行。有关如何避免问题的更多信息和提示,请参阅Earge operator上的Neo4j手册条目。

这个警告是什么意思? 如何导入此数据集?

我发现“使用定期提交”对于降低执行计划的权重非常有用。在一个研讨会上,我还听说NeN4J中的一个沉重的查询甚至会杀死你的数据库,所以你粘贴的错误只是一个警告,告诉你应该考虑你的命令。 以下是neo4j文档中的一个示例,可能对您的情况有用:

USING PERIODIC COMMIT 500
LOAD CSV FROM 'https://neo4j.com/docs/cypher-manual/3.5/csv/artists.csv' AS line
CREATE (:Artist { name: line[1], year: toInteger(line[2])})

“渴望”操作符确保查询中的操作不会相互冲突。通过LOAD CSV导入数据时,eager运算符将提供读写之间的边界,确保在移动到下一个操作之前对所有行执行一个操作,以避免冲突。这通常意味着您的整体导入效率较低

对于像您这样的小文件,根据您机器的配置,您的查询应该可以。 否则,请将其拆分为多个运行:

USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM "file:/data.csv" AS row 
WITH row, split(row.friends, ",") AS friends 
UNWIND friends AS friend 
MERGE (p1:Person {id:row.id}) 

此外,请更频繁地使用提交。

谢谢您的回答。当我运行第二个和第三个查询时,结果是(没有更改,没有记录)。数据库中没有任何关系。
USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM "file:/data.csv" AS row 
WITH row, split(row.friends, ",") AS friends 
UNWIND friends AS friend 
MERGE (p2:Person {id:row.id}) 
USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM "file:/data.csv" AS row 
WITH row, split(row.friends, ",") AS friends 
UNWIND friends AS friend 
MATCH (p1:Person {id:row.id}) 
MATCH (p2:Person {id:friend}) 
MERGE (p1)-[:FRIEND_WITH]->(p2)