繁体   English   中英

将 CSV 文件导入 neo4j 的急切操作员警告

[英]Eager operator warning for importing CSV file into neo4j

我想使用 LOAD CSV 命令将 twitter 数据集的大约 40000 个节点从 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 运算符,它强制所有相关数据在继续之前在主内存中具体化

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

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

我发现“使用定期提交”对于降低执行计划权重非常有用。 在一次研讨会上,我还听说neo4j 中的大量查询甚至可能会杀死您的数据库,因此您粘贴的错误只是一个警告,并告诉您应该考虑您的命令。

这是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])})

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

对于像你这样的小文件,根据你机器的配置,你的查询应该没问题。 否则,将其分解为多次运行:

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)

此外,使用PERIODIC COMMIT更频繁地提交

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM