将Amazon,S3将数据迁移到阿里云OSS上

1 方案概述
本文将介绍如何通过公网环境迁移Amazon Redshift数据到阿里云MaxCompute服务当中 。
本方案的总体迁移流程如下:
将Amazon,S3将数据迁移到阿里云OSS上
文章图片
第一 ,将Amazon Redshift 中的数据导出到Amazon S3存储上 。
第三 ,将数据从阿里云OSS加载到同Region的MaxCompute项目中 , 并进行校验数据完整性 。
2 前提条件
准备Redshift的集群环境及数据环境 。
使用已有的Redshift集群或创建新的Redshift集群:
将Amazon,S3将数据迁移到阿里云OSS上
文章图片
在Redshift集群中准备好需要迁移的数据 , 本方案中在public schema中准备了TPC-H数据集进行方案介绍:
将Amazon,S3将数据迁移到阿里云OSS上
文章图片
准备MaxCompute的项目环境 。
在阿里云Region创建MaxCompute项目 , 这里以新加坡Region为例 , 创建了作为迁移目标的MaxCompute项目:
将Amazon,S3将数据迁移到阿里云OSS上
文章图片
3.1 Unload简介
3.1.1 命令介绍
AWS Redshift支持Role-based access control和Key-based access control两种认证方式实现Redshift UNLOAD命令写入数据到S3 。
基于IAM Role的UNLOAD命令:
unload “select * from venue”
基于access_key的UNLOAD命令:
unload “select * from venue”
access_key_id
secret_access_key
session_token
相关语法及说明可参考Redshift文档关于UNLOAD到S3的介绍 。
本方案选择使用IAM Role方式进行数据导出 。
3.1.2 默认格式导出
unload默认导出数据的格式为 符合分隔的文本文件 , 命令如下:
unload “select * from customer”
执行成功后 , 在S3对应的bucket目录下可以查到文件文件:
将Amazon,S3将数据迁移到阿里云OSS上
文章图片
文件样例如下:
将Amazon,S3将数据迁移到阿里云OSS上
文章图片
3.1.3 Parquet格式导出
Unload同时支持以Parquet格式导出到S3 , 便于其他分析引擎直接进行读取消费:
unload “select * from customer”
FORMAT AS PARQUET
执行成功后 , s3对应bucket目录下生成了parquet格式的文件 。
将Amazon,S3将数据迁移到阿里云OSS上
文章图片
得益于Parquet文件的数据压缩特性 , 可以看到Parquet文件比文本文件大小更小 , 本方案选择Parquet格式作为数据导出和跨云迁移的数据格式 。
3.2 创建可以读写S3的IAM 角色
3.2.1 新建Redshift use case的IAM角色
将Amazon,S3将数据迁移到阿里云OSS上