在neo4j中有一個專門針對導(dǎo)入的命令neo4j-import(后期可能會刪除夺颤,但是本文使用的neo4j版本較低,社區(qū)版3.4.5)
可以用neo4j-admin命令代替:neo4j-admin import
于是币呵,當(dāng)全量導(dǎo)入數(shù)據(jù)時,尤其是數(shù)據(jù)中存在著大量的無法關(guān)聯(lián)的節(jié)點(diǎn)和無效的關(guān)系時侨颈,會導(dǎo)致jvm占用激增余赢,然后導(dǎo)入速度變緩慢,jvm在持續(xù)的做full GC哈垢,一段時間后(可能比較長)妻柒,就會報OOM錯誤
./neo4j-admin import \
--nodes:xx ../import/xx_header.csv,../import/xx.csv \
--relationships:yy? ../import/yy_header.csv,../import/yy.csv \
.....
--high-io \
?--ignore-missing-nodes=true \
--ignore-extra-columns=true \
即時添加參數(shù)max-memory也無法解決jvm的OOM
--high-io \
--max-memory=20G \
--ignore-missing-nodes=true \
只有設(shè)置jvm的大小,才能避免OOM
默認(rèn)的jvm大小是6G多(不知道是不是我們服務(wù)器的問題耘分,又或者是默認(rèn)的)
設(shè)置jvm的堆大小举塔,可通過變量JAVA_OPTS設(shè)定,才能真正的調(diào)整jvm的堆大小求泰,避免OOM
#!/bin/bash?
export JAVA_OPTS='-server -Xms8g -Xmx15g'??
sh /home/neo4j/neo4j/bin/neo4j-admin import \
--nodes:xx ../import/xx_header.csv,../import/xx.csv \?
--relationships:yy? ../import/yy_header.csv,../import/yy.csv \
.....
--high-io \
--max-memory=30G \
--ignore-missing-nodes=true \? ? ? ? ? ?
--ignore-extra-columns=true \?