我要如何使用 AWS DMS 以 Parquet 格式将数据迁移到 Amazon S3?

上次更新时间:2019 年 9 月 30 日

我要如何使用 AWS Database Migration Service (AWS DMS) 将数据以 Apache Parquet 格式 (.parquet) 迁移到 Amazon Simple Storage Service (Amazon S3)?

解决方法

如果您使用复制 3.1.3 或较新版本,可以使用 AWS DMS 以 Apache Parquet 格式将数据迁移到 S3 存储桶内。默认 Parquet 版本为 Parquet 1.0。

从 AWS DMS 控制台创建目标 Amazon S3 终端节点并使用类似下方内容的方式添加事件条件操作:

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", "BucketName": "dms-target-s3bucket", "DataFormat": "parquet”}'

使用以下事件条件操作来指定输出文件的 Parquet 版本:

parquetVersion=PARQUET_2_0;

如果输出文件仍为 CSV 格式,请运行 describe-endpoints 命令以查看 DataFormat 参数的值是否为 Parquet 格式:

aws dms describe-endpoints
"DataFormat": "parquet"

如果 DataFormat 参数的值为 CSV,则重新创建终端节点。

获得 Parquet 格式的输出后,就可以通过安装 Apache Parquet 的命令行工具解析输出文件了:

pip install parquet-cli --user

然后检查文件格式:

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

最后打印文件内容:

parq LOAD00000001.parquet --head
   i        c
0  1  insert1
1  2  insert2

这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助吗?