我已經使用導入工具讀取約100萬個節點。現在是時候設定關係了。 (不幸的是,如果你想使用導入工具,你必須在csv中明確地預先確定關係,所以這是不可能的。)neo4j'Java堆空間'錯誤 - 增加內存分配失敗時
我做的第一件事就是在節點上放一個索引。
接下來,我寫了這個,我不知道是我的問題 - 即使有一個索引,這種說法可能會引起太多笛卡爾積?:
USING PERIODIC COMMIT 500
LOAD CSV WITH HEADERS FROM
'file:///home/monica/...relationship.csv' AS line
MATCH (p1:Player {player_id: line.player1_id}), (p2:Player {player_id: line.player2_id})
MERGE (p1)-[:VERSUS]-(p2)
顯然,USING PERIODIC COMMIT 500
沒有幫助,因爲我得到了我的錯誤,
Java heap space
周圍的Googling,我才知道這可能有助於更改的Neo4j-wrapper.conf文件我的內存設置,所以我改變了設置,一路高達4GB(我有一個8GB的系統):
wrapper.java.initmemory=4096
wrapper.java.maxmemory=4096
還是得到了同樣的錯誤。
現在,我卡住了。我想不出任何其他策略,除此之外:
1)重寫語句
2)使用更多RAM的系統?
3)找到一些其他方式分批運行這個?
任何意見都會很棒。感謝neo4j SO社區提前。
我照你說的;我刪除了索引,添加了一個唯一約束,然後檢查了查詢計劃。確實......有一種「渴望」的潛伏!現在我需要閱讀文檔,看看如何解決這個問題。謝謝你指點我這個方向。 –
Mark Needham博客的鏈接建議在'LOAD CSV'的任何迭代過程中避免做太多事情。就我而言,我只是在'LOAD CSV'的一次迭代中做了一件事... –
你正在使用哪個neo4j版本? –