我要如何使用 AWS DMS 以 Parquet 格式将数据迁移到 Amazon S3?
上次更新日期:2021 年 1 月 18 日
我要如何使用 AWS Database Migration Service (AWS DMS) 将数据以 Apache Parquet 格式 (.parquet) 迁移到 Amazon Simple Storage Service (Amazon S3)?
解决方法
注意:如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请确保您运行的是最新版本的 AWS CLI。
如果您使用复制 3.1.3 或较新版本,可以使用 AWS DMS 以 Apache Parquet 格式将数据迁移到 S3 存储桶内。默认 Parquet 版本为 Parquet 1.0。
1. 通过 AWS DMS 控制台创建目标 Amazon SE 终端节点,然后按照如下所示添加额外连接属性 (ECA)。此外,请检查可用于在 S3 目标中存储 Parquet 对象的其他额外连接属性。
dataFormat=parquet;
或者在 AWS 命令行界面 (AWS CLI) 中使用 create-endpoint 命令创建目标 Amazon S3 终端节点:
aws dms create-endpoint --endpoint-identifier s3-target-parque --engine-name s3 --endpoint-type target --s3-settings '{"ServiceAccessRoleArn": <IAM role ARN for S3 endpoint>, "BucketName": <S3 bucket name to migrate to>, "DataFormat": "parquet"}'
2. 使用以下额外连接属性来指定输出文件的 Parquet 版本:
parquetVersion=PARQUET_2_0;
3. 运行 describe-endpoints 命令,查看您创建的 S3 终端节点是否将 S3 设置 DataFormat 或额外连接属性 dataFormat 设置为 “parquet”。要检查 S3 设置 DataFormat,请运行类似于以下内容的命令:
aws dms describe-endpoints --filters Name=endpoint-arn,Values=<S3 target endpoint ARN> --query "Endpoints[].S3Settings.DataFormat"
[
"parquet"
]
4. 如果 DataFormat 参数的值为 CSV,则重新创建终端节点。
5. 获得 Parquet 格式的输出后,就可以通过安装 Apache Parquet 命令行工具解析输出文件了:
pip install parquet-cli --user
6. 然后检查文件格式:
parq LOAD00000001.parquet
# Metadata
<pyarrow._parquet.FileMetaData object at 0x10e948aa0>
created_by: AWS
num_columns: 2
num_rows: 2
num_row_groups: 1
format_version: 1.0
serialized_size: 169
7. 最后打印文件内容:
parq LOAD00000001.parquet --head
i c
0 1 insert1
1 2 insert2