本文为您介绍如何通过公网环境将Amazon Redshift数据迁移至MaxCompute。
前提条件
- 准备Amazon Redshift集群环境及数据环境。
您可以登录AWS官网,获取创建Redshift集群的详细操作内容,详情请参见Amazon Redshift集群管理指南。
- 创建Redshift集群。如果已有Redshift集群,您可以直接使用已有的Redshift集群。
- 在Redshift集群中准备好需要迁移的Amazon Redshift数据。
假设,已在public schema中准备好了TPC-H数据集。数据集使用MaxCompute 2.0数据类型和Decimal 2.0数据类型。
- 创建Redshift集群。如果已有Redshift集群,您可以直接使用已有的Redshift集群。
- 准备MaxCompute的项目环境
操作详情请参见准备工作。
以新加坡区域为例,创建作为迁移目标的MaxCompute项目。由于TPC-H数据集使用MaxCompute 2.0数据类型和Decimal 2.0数据类型,因此本文创建的项目为MaxCompute 2.0版本。 - 开通阿里云OSS服务。
开通阿里云OSS服务详情请参见开通OSS服务。
背景信息

序号 | 描述 |
---|---|
① | 将Amazon Redshift数据导出至Amazon S3数据湖(简称S3)。 |
② | 通过对象存储服务OSS的在线迁移上云服务,将数据从S3迁移至OSS。 |
③ | 将数据从OSS迁移至同区域的MaxCompute项目中,并校验数据完整性和正确性。 |
步骤一:将Amazon Redshift数据导出至S3
Amazon Redshift支持IAM角色和临时安全凭证(AccessKey)认证方式。您可以基于这两种认证方式通过Redshift UNLOAD命令将数据导出至S3。将Amazon Redshift数据导出至S3的详细操作内容请参见卸载数据。
- 基于IAM角色的UNLOAD命令
-- 通过UNLOAD命令将表customer的内容导出至S3。 UNLOAD ('SELECT * FROM customer') TO 's3://bucket_name/unload_from_redshift/customer/customer_' --S3 Bucket。 IAM_ROLE 'arn:aws:iam::****:role/MyRedshiftRole'; --角色ARN。
- 基于AccessKey的UNLOAD命令
-- 通过UNLOAD命令将表customer的内容导出至S3。 UNLOAD ('SELECT * FROM customer') TO 's3://bucket_name/unload_from_redshift/customer/customer_' --S3 Bucket。 Access_Key_id '<access-key-id>' --IAM用户的Access Key ID。 Secret_Access_Key '<secret-access-key>' --IAM用户的Access Key Secret。 Session_Token '<temporary-token>'; --IAM用户的临时访问令牌。
- 默认格式
命令示例如下。
执行成功后,导出以竖线(|)分隔的文本文件。您可以登录S3控制台,在对应Bucket中查看导出的文本文件。UNLOAD ('SELECT * FROM customer') TO 's3://bucket_name/unload_from_redshift/customer/customer_' IAM_ROLE 'arn:aws:iam::****:role/redshift_s3_role';
导出的文本文件格式如下。
- PARQUET格式
以PARQUET格式导出,便于其它引擎直接读取数据。命令示例如下。
执行成功后,您可以在对应Bucket中查看导出的文件。PARQUET文件比文本文件更小,数据压缩率更高。UNLOAD ('SELECT * FROM customer') TO 's3://bucket_name/unload_from_redshift/customer_parquet/customer_' FORMAT AS PARQUET IAM_ROLE 'arn:aws:iam::xxxx:role/redshift_s3_role';
本文以IAM角色认证及导出PARQUET格式为例介绍数据迁移操作。
步骤二:将导出至S3的数据迁移至对象存储服务OSS
MaxCompute支持通过OSS的在线迁移上云服务,将S3的数据迁移至OSS,详情请参见AWS S3迁移教程。在线迁移上云服务处于公测状态,您需要联系客服,并由在线服务团队开通后才可使用。
步骤三:将数据从OSS迁移至同区域的MaxCompute项目
您可以通过MaxCompute的LOAD命令将OSS数据迁移至同区域的MaxCompute项目中。
LOAD命令支持STS认证和AccessKey认证两种方式,AccessKey认证方式需要使用明文AccessKey ID和AccessKey Secret。STS认证方式不会暴露AccessKey信息,具备高安全性。本文以STS认证方式为例介绍数据迁移操作。