S3からNeptuneにバルクロードする
S3からNeptuneにバルクロードする:
NeptuneにVertex(頂点)、Edge(辺)のデータをいれる手段の一つとしてS3を経由したバルクロードの方法があります。
公式ドキュメントにもある通り、csvを用意してIAMを設定すればほぼほぼ完了です。
マネジメントコンソールから「クラスターのアクション」から「IAMロールの管理」を選択すると下記の画面が現れます。
ここに、設定したIAMロールを紐付ければオッケーです。反映まで少し時間がかかります。
設定方法ですがここにある通り、
ここを参考にためしてみます。
ヘッダーとして、下記が最低限定義できれていれば、ほぼほぼオッケーでしょう。
ちょうど、私は駅すぱあとを提供する会社に勤めていますので、駅データを抽出してCSV化してみました。
作成したcsvファイルをS3に配置します。
個人的都合でNeptuneをPrivate Subnet内に配置しているため、アクセスが許可されたEC2からバルクロードしたみたいと思います。
以下の2点がちゃんとできていれば、ほぼほぼオッケーです。
EC2上で下記のコマンドを実行します。
そうすると下記のレスポンスが帰ってきます。
これは、挿入・更新が成功したというものではなく、どうやら処理を受け付けたというレスポンスっぽいです。
また、挿入後すぐに別のを挿入しようとするとエラーが帰ってきます。
(基本的に1タスクしか受け付けない?)
Neptuneのr4.largeインスタンスを使ってたので、ロード件数に対してどれくらいCPUを使うのかチェックしてみます。
結果としては、下記のようになりました。
ただ、これを試す前に20万件を一気にバルクロードしたらCPUが100%に張り付いたまま帰ってこない事象が発生しました。(バグか?)
ベスト・プラクティスにあるように、ロード時には一旦強いインスタンスにスケールアップするのがベターですね。
NeptuneにVertex(頂点)、Edge(辺)のデータをいれる手段の一つとしてS3を経由したバルクロードの方法があります。
公式ドキュメントにもある通り、csvを用意してIAMを設定すればほぼほぼ完了です。
IAMの用意
マネジメントコンソールから「クラスターのアクション」から「IAMロールの管理」を選択すると下記の画面が現れます。ここに、設定したIAMロールを紐付ければオッケーです。反映まで少し時間がかかります。
設定方法ですがここにある通り、
- AmazonS3ReadOnlyAccessを使う
- 信頼関係の編集を行う
データの用意
ここを参考にためしてみます。ヘッダーとして、下記が最低限定義できれていれば、ほぼほぼオッケーでしょう。
ちょうど、私は駅すぱあとを提供する会社に勤めていますので、駅データを抽出してCSV化してみました。
作成したcsvファイルをS3に配置します。
バルクロード
個人的都合でNeptuneをPrivate Subnet内に配置しているため、アクセスが許可されたEC2からバルクロードしたみたいと思います。以下の2点がちゃんとできていれば、ほぼほぼオッケーです。
EC2上で下記のコマンドを実行します。
curl -X POST \ -H 'Content-Type: application/json' \ https://あなたのクラスターエンドポイント:8182/loader -d ' { "source" : "s3://csvを配置したバケット/作成した.csv", "format" : "csv", "iamRoleArn" : "さっきつくったIAMロール", "region" : "ap-northeast-1", "failOnError" : "FALSE" }'
{ "status" : "200 OK", "payload" : { "loadId" : "50b6ccc6-de0b-4830-ba15-*********" } }
また、挿入後すぐに別のを挿入しようとするとエラーが帰ってきます。
(基本的に1タスクしか受け付けない?)
ロードとCPU使用率の関係
Neptuneのr4.largeインスタンスを使ってたので、ロード件数に対してどれくらいCPUを使うのかチェックしてみます。結果としては、下記のようになりました。
ただ、これを試す前に20万件を一気にバルクロードしたらCPUが100%に張り付いたまま帰ってこない事象が発生しました。(バグか?)
ベスト・プラクティスにあるように、ロード時には一旦強いインスタンスにスケールアップするのがベターですね。
コメント
コメントを投稿