LoginSignup
1
1
はじめての記事投稿

NeptuneのBulk Loadでつまづいた件

Posted at

NeptuneのBulk Loadでつまづいた件(その1)

こんにちは。Ariaです。最近ルービックキューブにはまってます。(全然できない)

状況

Neptuneのbulk loadでOUT_OF_MEMORY_ERRORが出て困りました。

今回エラーが発生した手順
1. Neptuneコンソール画面からノートブックを開く。

2. Jupyterのセルで%loadコマンドを実行し、データを読み込みトライ。
3. Load Failedと出たので、ターミナルから踏み台サーバにSSH接続し、以下コマンドでエラー内容を精査。

$ curl -X GET "https://your-neptune-endpoint:port/loader/{loaderId}?details=true&errors=true"

※エンドポイント、ポート、{loaderId}は適宜変更してくださいね

(参考: Neptuneユーザーガイドより)
Neptune DB インスタンスにデータをロードする
Neptune Loader Get-Status errorLogs

↓curlの出力結果

 (前略)

"errorLogs" : [
                {
                    "errorCode" : "OUT_OF_MEMORY_ERROR",
                    "errorMessage" : "Out of memory error. Resume load and try again.",
                    "fileName" : "s3://globi-neptune/full_data/edge/globi_interaction_edge_for_gremlin.csv",
                    "recordNum" : 0
                },

(略)

結論

上記結果のerrorMessageに"Resume load and try again"とある通り、ノートブックで%loadコマンドを繰り返し実行した。今回のケースの場合、3回目の%loadコマンド実行でLoad completedが表示され、データが全権取り込まれたことが確認できた。

Overall Status: LOAD_COMPLETED
Total execution time: 0:06:33
Done.

考察

  • (%loadコマンドが2回失敗したのは)NeptuneDBのクラスターの設定で、ケチって最大キャパシティーユニットを下げまくったのが原因かも。
  • loadの途中でエラーが出たことで、2回目のロードで重複が出ないか心配だったが、そこはNeptuneが賢くやってくれるようだった。

余談

データが全件取り込めたかどうかの確認は、次のgremlinクエリで簡単に確認できます。

%%gremlin
g.V().count()  // ノードの件数確認
g.E().count() // エッジの件数確認

Happy coding!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1