2016-05-16 9 views
1

私はインポートツールを使用して100万個のノードを読み込みました。今、それは関係を設定する時間です。 (残念ながら、インポートツールを使用する場合は、csvで明示的に関係を事前に決めておく必要があるようですので、それは問題ありません)neo4jによる 'Java heap space'エラー - メモリ割り当ての増加が失敗した場合

まず、ノードにインデックスを付けることでした。でも、インデックスと、この文は、あまりにも多くのデカルトの製品を引き起こす可能性があります?:

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 

は、私はそれがのNeo4j-のwrapper.confファイルで私の記憶の設定を変更するために役立つかもしれないことを学んだので、私は(私が持っているすべての方法4ギガバイトまでの設定を変更しました8 GBシステム):

wrapper.java.initmemory=4096 
wrapper.java.maxmemory=4096 

まだ同じエラーがあります。

今、私は立ち往生しています。

1)文を書き直してください
2)RAMが多いシステムを使用していますか?
3)これをバッチで実行する別の方法がありますか?

アドバイスは素晴らしいです。 neo4j SOコミュニティに感謝します。

答えて

1

:Player(player_id)にインデックスまたは一意制約がありますか?前者の場合は、索引を削除して一意の制約を追加します。それ以外の場合、複数のPlayerノードを同じように共有することは可能ですplayer_id - デカルト製品を引き起こす可能性があります。同じプレーヤーを10回使用すると仮定すると、csvの各行で100個の組み合わせになります。

このような重複がないことが確認されると、次に確認するのはEagerPipeです。クエリプラン(PERIODIC COMMITなし)

EXPLAIN LOAD CSV WITH HEADERS FROM 
'file:///home/monica/...relationship.csv' AS line 
MATCH (b1:Player {player_id: line.player1_id}), (p2:Player {player_id:  line.player2_id}) 
MERGE (p1)-[:VERSUS]-(p2) 

が、その後eagerPERIODIC COMMITで何かを示しているが適用されていない場合、詳細についてはhttp://www.markhneedham.com/blog/2014/10/23/neo4j-cypher-avoiding-the-eager/を参照してください。

最近のNeo4jバージョンでは、これが起こる可能性が低くなります。

更新

私はちょうどあなたが試合中に、マージp1b1を使用していることに気づいてきました - ので、後者が存在しないと、マージ中に新しいノードとして作成されます。

あなたは試してみてくださいすることができ:

USING PERIODIC COMMIT 500 
LOAD CSV WITH HEADERS FROM 
'file:///home/monica/...relationship.csv' AS line 
MATCH (p1:Player {player_id: line.player1_id}) 
MATCH (p2:Player {player_id: line.player2_id}) 
MERGE (p1)-[:VERSUS]-(p2) 
+0

を私はあなたが言うように。インデックスを削除し、一意の制約を追加した後、クエリプランを確認しました。確かに...「熱心な人」が潜んでいる!今私はドキュメントを読んで、私がこれを回避する方法を知る必要があります。この方向で私を指摘してくれてありがとう。 –

+0

Mark Needhamのブログへのリンクは、「LOAD CSV」の繰り返しのあいだに過度にやりすぎることを避けることを推奨しています。私の場合、私は 'LOAD CSV'の1回の反復で1つのことをやっているだけです... –

+0

あなたはどのneo4jバージョンを使用していますか? –

関連する問題