簡體   English   中英

將較大的csv文件加載到neo4j中

[英]Load a large csv file into neo4j

我要加載一個包含Wikipedia類別rels.csv之間的關系的csv(類別之間的關系為400萬個)。 我試圖通過更改以下參數值來修改設置文件:

dbms.memory.heap.initial_size=8G 
dbms.memory.heap.max_size=8G
dbms.memory.pagecache.size=9G

我的查詢如下:

USING PERIODIC COMMIT 10000
LOAD CSV FROM 
"https://github.com/jbarrasa/datasets/blob/master/wikipedia/data/rels.csv?raw=true" AS row
    MATCH (from:Category { catId: row[0]})
    MATCH (to:Category { catId: row[1]})
    CREATE (from)-[:SUBCAT_OF]->(to)

此外,我在catId和catName上創建了索引。 盡管進行了所有這些優化,查詢仍在運行(自昨天開始)。

您能告訴我是否還有更多優化方法可以加載此CSV文件嗎?

花費太多時間。 數百萬的關系應該花費幾分鍾甚至幾分鍾的時間。

我剛剛在321秒內從您共享的鏈接(Cats-90和Rels-231)中加載了所有數據,而我的筆記本電腦上的內存設置還不到一半。

dbms.memory.heap.initial_size=1G  
dbms.memory.heap.max_size=4G 
dbms.memory.pagecache.size=1512m

而這不是極限,可以進一步提高。 在此處輸入圖片說明

稍微修改的查詢:增加LIMIT 10次

USING PERIODIC COMMIT 100000
LOAD CSV FROM 
"https://github.com/jbarrasa/datasets/blob/master/wikipedia/data/rels.csv?raw=true" AS row
    MATCH (from:Category { catId: row[0]})
    MATCH (to:Category { catId: row[1]})
    CREATE (from)-[:SUBCAT_OF]->(to)

一些建議:

  1. 在用於搜索節點的字段上創建索引。 (加載數據時無需在其他字段上建立索引,以后可以完成,它會消耗不必要的內存)

  2. 不要將最大堆大小設置為已滿系統RAM。 將其設置為RAM的50%。

  3. 增加LIMIT :如果增加堆(RAM),除非使用,否則不會提高性能。 當您將LIMIT設置為10,000時,堆的大部分將是免費的。 我能夠使用4G堆加載限制為100,000的數據。 您可以設置200,000或更多。 如果它引起任何問題,請嘗試減少它。
  4. 重要事項確保更改/設置配置后重新啟動Neo4j。 (如果尚未完成)。

下次運行加載CSV查詢時,請不要忘記刪除以前的數據,因為它將創建重復項。

注意:我將文件下載到便攜式計算機並使用了相同文件,因此沒有下載時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM