簡體   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