Neptune バルクローダーのロード時間を短縮する方法を教えてください。

最終更新日: 2020 年 10 月 9 日

Neptune バルクローダーを使用して Amazon Neptune クラスターにデータをロードしようとしています。しかし、このプロセスには予想以上に時間がかかっています。ロード時間を減らす方法を教えてください。

解決方法

インスタンスクラス

バルクロードする前にライターインスタンスを最大サイズに設定します。ライターとリーダーの両方で異なるインスタンスクラスを維持して、Neptune クラスター内のノードを 1 つだけスケーリングするようにできます。一括アップロードが完了したら、ライターインスタンスをスケールダウンできます。

並列処理

書き込み中に他の操作を実行しない場合は、OVERSUBSCRIBE 並列処理パラメータを使用します。このパラメータにより、Neptune バルクローダーが利用できるすべてのリソースを使用するよう設定され、全体のロード時間が短縮されます。

ファイルサイズとリクエストのスループット

Amazon Simple Storage Service (Amazon S3) バケットでは、より大きなバルクロードファイル (csv ファイルなど) を使用することをお勧めします。これにより、Bulk Load API がこれらの大きなファイルを分割し、同時実行を管理できるようになります。複数のファイルがある場合は、次のいずれかの方法を検討してください。

  • S3 ソースをフォルダとして設定する方法: Bulk Load API は自動的に頂点ファイルで開始し、その後エッジファイルをアップロードします。
  • Neptune は並行してファイルをロードすることができ、複数のファイルを持つことでロードプロセスを高速化できます
  • ファイルを圧縮する方法: Bulk Load API は gzip ファイルをサポートしているため、S3 バケットから大きなファイルをフェッチするオーバーヘッドを削減できます。
  • queueRequest および 依存関係 リクエストパラメータを使用します。queueRequest パラメータが「TRUE」に設定されている場合、Neptune は複数のジョブを同時にキューイングします。1 つのジョブが失敗するとすべてのジョブが失敗するように、複数のレベルの依存関係を設定できます。この方法で依存関係を設定すると、データの不一致を防ぐこともできます。

例えば、ジョブ A とジョブ B が互いに独立している場合は、ジョブ C の開始前にジョブ A とジョブ B が終了するようにジョブ C を設定します。ジョブ A とジョブ B を互いに順に送信し (順番は任意)、それらのロード ID を保存します。次に、dependencies フィールドに 2 つのジョブのロード ID を使用して load-job-C を送信します。

"dependencies" : ["Job_A_loadID", "Job_B_loadID"]

ジョブ A またはジョブ B のいずれかが失敗した場合、ジョブ C は実行されず、そのステータスは LOAD_FAILED_BECAUSE_DEPENDENCY_NOT_SATISFIED になります。

データの衛生

  • サポートされているロードデータフォーマットにデータを変換します。
  • データを維持するには、updateSingleCardinalityProperties を使用します。例えば、Person の頂点があり、電話番号を変更する場合、Neptune バルクローダーは変更を拒否します。新しい値はエラーとして扱われます。ただし、updateSingleCardinalityProperties を「TRUE」に設定すると、その頂点プロパティの値が Neptune バルクローダーによって置き換えられます。
    重要: CSV ファイルのヘッダーは、プロパティの単一のカーディナリティを示す必要があります。updateSingleCardinalityProperties パラメータのカーディナリティとコンテンツが「単一」または単一値でない場合、パラメータは機能しません。詳細については、「プロパティの列ヘッダー」の「列のカーディナリティを指定する」を参照してください。
  • バルクロードの開始前に、バルクロードファイルから重複または既知のエラーをすべて削除します。
  • 一意の述語 (エッジや頂点のプロパティなど) の数を減らします。

ロードジョブの動作

failOnError パラメータを使用すると、エラーが発生したときにバルクロード操作を続行するかどうかを指定できます。または、mode パラメータを使用して、ロードが最初に失敗したファイルに対してのみロードジョブが再開されるようにすることもできます。mode パラメータと failOnError パラメータの詳細については、「リクエストパラメータ」を参照してください。

失敗したバルクローダージョブのトラブルシューティング

Get-Status API を使用すると、特定のロードジョブに関する詳細情報を取得できます。次の cURL 呼び出しを使用して、正常性のステータスを確認し、Neptune バルクローダーでエラーがないか確認します。

curl -s "https://neptune:8182/loader/<loaderid>?details=true&errors=true"

Neptune バルクローダーのトラブルシューティングの詳細については、「Amazon Neptune バルクローダーの処理エラーの解決方法を教えてください」を参照してください。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?