背景・目的
DynamoDB(以降、DDBという。)のデータをS3に出力し、Glueで参照するにあたり以下の内容を確認します。
- DDBからS3にExportの時間
- ファイル数
まとめ
以下の条件でのExportの実行時間は「5分程度」、ファイル数は「6」でした。
- DDBのレコード件数は約104万件
実践
準備
データの準備
$ head ddb-import.csv
"id","time"
"12","20221027"
"13","20221027"
"14","20221027"
"15","20221027"
"16","20221027"
"17","20221027"
"18","20221027"
"19","20221027"
"20","20221027"
$
$ ls -l ddb-import*csv
-rw-r--r-- 1 XXXX YYYY 20909047 10 27 02:23 ddb-import-10.csv
-rw-r--r-- 1 XXXX YYYY 20909047 10 27 02:22 ddb-import-2.csv
-rw-r--r-- 1 XXXX YYYY 20909047 10 27 02:22 ddb-import-3.csv
-rw-r--r-- 1 XXXX YYYY 20909047 10 27 02:22 ddb-import-4.csv
-rw-r--r-- 1 XXXX YYYY 20909047 10 27 02:22 ddb-import-5.csv
-rw-r--r-- 1 XXXX YYYY 20909047 10 27 02:23 ddb-import-6.csv
-rw-r--r-- 1 XXXX YYYY 20909047 10 27 02:23 ddb-import-7.csv
-rw-r--r-- 1 XXXX YYYY 20909047 10 27 02:23 ddb-import-8.csv
-rw-r--r-- 1 XXXX YYYY 20909047 10 27 02:23 ddb-import-9.csv
-rw-r--r-- 1 XXXX YYYY 20909047 10 27 02:20 ddb-import.csv
$
$ wc -l ddb-import*csv
1048576 ddb-import-10.csv
1048576 ddb-import-2.csv
1048576 ddb-import-3.csv
1048576 ddb-import-4.csv
1048576 ddb-import-5.csv
1048576 ddb-import-6.csv
1048576 ddb-import-7.csv
1048576 ddb-import-8.csv
1048576 ddb-import-9.csv
1048576 ddb-import.csv
10485760 total
$
- データをアップロードします。
19.9MB*10ファイル≒200MBのファイルを用意します。
DDBへインポート
S3ファイルをインポートします。
-
以下を入力し「次へ」をクリックします。
-
以下を入力し、「次へ」をクリックします。
-
「インポート」をクリックします。
-
しばらくして、失敗しました。
CloudWatch Logsには、以下のエラーが出ていました。原因の調査ができていません。(後日調査予定)
Unable to map value based on the given schema. Remainder of the file will not be processed
エクスポート
-
ファイルの件数を確認します。104万件でした。
$ aws s3 ls XXXX/ddb-export/AWSDynamoDB/01666809631252-b06e07bc/data/
2022-10-27 03:45:05 655774 aagmcask6azqrldvsymxbknosu.json.gz
2022-10-27 03:44:43 652058 gck6vxjj2a7gtdk3b6gmzp5sya.json.gz
2022-10-27 03:45:04 654112 gg5nfwkv3e4odd5a6fzpvplal4.json.gz
2022-10-27 03:45:09 653818 gwcolxdf3e2btc5gf5xk7qg2by.json.gz
2022-10-27 03:45:08 651472 mdyoqwtfsq7vtlmkvvndz3qd2a.json.gz
2022-10-27 03:45:08 654626 o4kd5m6el45c5aou6szy35mh2e.json.gz
2022-10-27 03:45:35 652502 wtz25phida5nnbgwgngnxmbkqa.json.gz
$
$ aws s3 cp s3://XXXX/ddb-export/AWSDynamoDB/01666809631252-b06e07bc/data/aagmcask6azqrldvsymxbknosu.json.gz - | gunzip | wc -l
150292
$ ^aagmcask6azqrldvsymxbknosu.json.gz^gck6vxjj2a7gtdk3b6gmzp5sya.json.gz
aws s3 cp s3://XXXX/ddb-export/AWSDynamoDB/01666809631252-b06e07bc/data/gck6vxjj2a7gtdk3b6gmzp5sya.json.gz - | gunzip | wc -l
149484
$ ^gck6vxjj2a7gtdk3b6gmzp5sya.json.gz^gg5nfwkv3e4odd5a6fzpvplal4.json.gz
aws s3 cp s3://XXXX/ddb-export/AWSDynamoDB/01666809631252-b06e07bc/data/gg5nfwkv3e4odd5a6fzpvplal4.json.gz - | gunzip | wc -l
150006
$ ^gg5nfwkv3e4odd5a6fzpvplal4.json.gz^gwcolxdf3e2btc5gf5xk7qg2by.json.gz
aws s3 cp s3://XXXX/ddb-export/AWSDynamoDB/01666809631252-b06e07bc/data/gwcolxdf3e2btc5gf5xk7qg2by.json.gz - | gunzip | wc -l
149856
$ ^gwcolxdf3e2btc5gf5xk7qg2by.json.gz^mdyoqwtfsq7vtlmkvvndz3qd2a.json.gz
aws s3 cp s3://XXXX/ddb-export/AWSDynamoDB/01666809631252-b06e07bc/data/mdyoqwtfsq7vtlmkvvndz3qd2a.json.gz - | gunzip | wc -l
149320
$ ^mdyoqwtfsq7vtlmkvvndz3qd2a.json.gz^o4kd5m6el45c5aou6szy35mh2e.json.gz
aws s3 cp s3://XXXX/ddb-export/AWSDynamoDB/01666809631252-b06e07bc/data/o4kd5m6el45c5aou6szy35mh2e.json.gz - | gunzip | wc -l
150029
$ ^o4kd5m6el45c5aou6szy35mh2e.json.gz^wtz25phida5nnbgwgngnxmbkqa.json.gz
aws s3 cp s3://XXXX/ddb-export/AWSDynamoDB/01666809631252-b06e07bc/data/wtz25phida5nnbgwgngnxmbkqa.json.gz - | gunzip | wc -l
149588
$
考察
- 100万件で6ファイル出力されました。ある程度まとめられて出力されることからGlueでも扱えそうです。
- Importに失敗したため、原因は後日確認したいと思います。
参考