DynamoDB 表导出输出格式 - Amazon DynamoDB
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

DynamoDB 表导出输出格式

除了包含您的表数据的文件,DynamoDB 表导出还包含两个清单文件。这些文件都保存在导出请求指定的 Amazon S3 存储桶中。以下章节介绍每个输出对象的格式和内容。

清单文件

DynamoDB 在每个导出请求的指定 S3 存储桶中创建两个清单文件及其校验和文件。

export-prefix/AWSDynamoDB/ExportId/manifest-summary.json export-prefix/AWSDynamoDB/ExportId/manifest-summary.checksum export-prefix/AWSDynamoDB/ExportId/manifest-files.json export-prefix/AWSDynamoDB/ExportId/manifest-files.checksum

请求表导出时可以选择 export-prefix。这样有助于保持目标 S3 存储桶中的文件有组织。ExportId 是确保到同一个 S3 存储桶和 export-prefix 的多个导出不互相覆盖的唯一令牌。

此导出还将为每个分区创建至少 1 个文件。每个文件中的所有项目都来自于该特定分区的哈希密钥空间。

注意

DynamoDB 还在清单文件的目录中创建一个名为 _started 的空文件。此文件验证目标存储桶是否可写入,以及导出是否已开始。可以安全删除。

汇总清单

manifest-summary.json 文件包含导出任务的汇总信息。格式如下所示:

{ "version": "2020-06-30", "exportArn": "arn:aws:dynamodb:us-east-1:123456789012:table/ProductCatalog/export/01234567890123-a1b2c3d4", "startTime": "2020-11-04T07:28:34.028Z", "endTime": "2020-11-04T07:33:43.897Z", "tableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/ProductCatalog", "tableId": "12345a12-abcd-123a-ab12-1234abc12345", "exportTime": "2020-11-04T07:28:34.028Z", "s3Bucket": "ddb-productcatalog-export", "s3Prefix": "2020-Nov", "s3SseAlgorithm": "AES256", "s3SseKmsKeyId": null, "manifestFilesS3Key": "AWSDynamoDB/01345678901234-abc12345/manifest-files.json", "billedSizeBytes": 0, "itemCount": 8, "outputFormat": "DYNAMODB_JSON" }

文件清单

manifest-files.json 文件包含其中包含已导出表数据的文件的信息。文件采用 JSON Lines 格式,这意味着换行符用作项目分隔符。为了提高可读性,在下面的示例中,文件清单的一个数据文件的详细信息显示在多行。

{ "itemCount": 8, "md5Checksum": "sQMSpEILNgoQmarvDFonGQ==", "etag": "af83d6f217c19b8b0fff8023d8ca4716-1", "dataFileS3Key": "AWSDynamoDB/11111111111111-22222222/data/33334444EXAMPLE.json.gz" }

数据对象

DynamoDB 可以采用两种格式导出表数据:DynamoDB JSON 和 Amazon Ion。无论选择何种格式,数据都将写入多个压缩文件,文件以 manifest-files.json 文件的键命名。

export-prefix/AWSDynamoDB/ExportId/data/bafybeiczss3yxay3o4abnabbb.json.gz export-prefix/AWSDynamoDB/ExportId/data/gkes5o3lnrhoznhnkyax3hxvya.json.gz

DynamoDB JSON

DynamoDB JSON 格式的表导出包含多个 Item 对象。每个单独对象采用 DynamoDB 的标准编组 JSON 格式。

为 DynamoDB JSON 导出数据创建自定义解析器时,请记住,格式为 JSON Lines。这意味着换行符用作项目分隔符。多 Amazon 服务,如 Athena 和 Amazon Glue,将自动解析此格式。

在下面的示例中,为了提高可读性,DynamoDB JSON 导出的单个项目显示为多行。

{ "Item":{ "Authors":{ "SS":[ "Author1", "Author2" ] }, "Dimensions":{ "S":"8.5 x 11.0 x 1.5" }, "ISBN":{ "S":"333-3333333333" }, "Id":{ "N":"103" }, "InPublication":{ "BOOL":false }, "PageCount":{ "N":"600" }, "Price":{ "N":"2000" }, "ProductCategory":{ "S":"Book" }, "Title":{ "S":"Book 103 Title" } } }

Amazon Ion

Amazon ion 是一种类型丰富、自我描述的分层数据序列化格式,旨在解决设计面向服务的大型体系时每天面临的快速开发、解耦和效率挑战。DynamoDB 支持以 Ion 的文本格式(JSON 的父集)导出表数据。

将表导出为 Ion 格式时,表中使用的 DynamoDB 数据类型将映射到 Ion 数据类型。DynamoDB 集使用 Ion 类型注释消除源表使用的数据类型歧义。

DynamoDB 到 ion 数据类型转换
DynamoDB 数据类型 Ion 表示
String (S) 字符串
Boolean (BOOL) 布尔
Number (N) 十进制
Binary (B) blob
Set (SS, NS, BS) 列表(包含类型注释 $dynamodb_SS、$dynamodb_NS 或 $dynamodb_BS)
List 列表
Map struct

Ion 导出中的项目由换行符分隔。每行以 Ion 版本标记开头,后跟一个 Ion 格式的项目。在下面示例中,为了提高可读性,Ion 导出的单个项目显示为多行。

$ion_1_0 { Item:{ Authors:$dynamodb_SS::["Author1","Author2"], Dimensions:"8.5 x 11.0 x 1.5", ISBN:"333-3333333333", Id:103., InPublication:false, PageCount:6d2, Price:2d3, ProductCategory:"Book", Title:"Book 103 Title" } }