0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

DynamoDBのS3 Exportを確認する

Last updated at Posted at 2022-10-26

背景・目的

DynamoDB(以降、DDBという。)のデータをS3に出力し、Glueで参照するにあたり以下の内容を確認します。

  • DDBからS3にExportの時間
  • ファイル数

まとめ

以下の条件でのExportの実行時間は「5分程度」、ファイル数は「6」でした。

  • DDBのレコード件数は約104万件

実践

準備

データの準備

  1. CSVファイルをアップロードするバケットを用意します。
    image.png

  2. ファイルを準備します。

$ 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
$

  1. データをアップロードします。
    19.9MB*10ファイル≒200MBのファイルを用意します。

image.png

DDBへインポート

S3ファイルをインポートします。

  1. DDBの画面で「S3からインポート」をクリックします。
    image.png

  2. 以下を入力し「次へ」をクリックします。

    • ソースS3URL:アップロードしたファイルが格納されているS3パス
    • S3バケット所有者:このAWSアカウント
    • ファイル圧縮をインポート:圧縮なし
    • インポートファイルのフォーマット:CSV
    • CSVヘッダー:ソースファイルの最初の行を使用
    • CSV区切り文字:カンマ
      image.png
  3. 以下を入力し、「次へ」をクリックします。

    • テーブル名:EXPORT_TABLE006
    • パーティションキー:
      • id
      • time
        image.png
  4. 「インポート」をクリックします。

  5. しばらくして、失敗しました。

CloudWatch Logsには、以下のエラーが出ていました。原因の調査ができていません。(後日調査予定)
Unable to map value based on the given schema. Remainder of the file will not be processed

image.png
image.png

エクスポート

  1. DDBのテーブルでポイントインタイムリカバリ(以降、PITRという。)を有効化します。
    image.png

  2. 以下を指定して「エクスポート」をクリックします。
    image.png

  3. しばらくするとエクスポート中から、完了になります。
    image.png
    image.png

  4. 出力されました。
    image.png

  5. ファイルの件数を確認します。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に失敗したため、原因は後日確認したいと思います。

参考

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?