Amazon Redshift数据迁移到MaxCompute

2021-12-27 00:00:00 创建 数据 迁移 在线 详见

Amazon Redshift 中的数据迁移到MaxCompute中经常需要先卸载到S3中,再到阿里云对象存储OSS中,大数据计算服务MaxCompute然后再通过外部表的方式直接读取OSS中的数据。
如下示意图:

前提条件

本文以SQL Workbench/J工具来连接Reshift进行案例演示,其中用了Reshift官方的Query editor发现经常报一些奇怪的错误。建议使用SQL Workbench/J。

  • 下载Amazon Redshift JDBC驱动程序,推荐4.2 https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/1.2.16.1027/RedshiftJDBC42-1.2.16.1027.jar
  • 在SQL Workbench/J中新建Drivers,选择下载的驱动程序jar,并填写Classname为 com.amazon.redshift.jdbc42.Driver。
  • 配置新连接,选择新建的Driver,并复制JDBC url地址、数据库用户名和密码并勾选Autocommit。

如果在配置过程中发现一只connection time out,需要在ecs的vpc安全组中配置安全策略。具体详见:https://docs.aws.amazon.com/zh_cn/redshift/latest/gsg/rs-gsg-authorize-cluster-access.html

Amazon Redshift数据预览

方式一:在AWS指定的query editor中进行数据预览,如下所示:

方式二:使用Workbench/J进行数据预览,如下图所示:
具体Workbench/J的下载和配置详见:https://docs.aws.amazon.com/zh_cn/redshift/latest/mgmt/connecting-using-workbench.html
(下图为JDBC驱动下载和JDBC URL查看页面)

卸载数据到Amazon S3

在卸载数据到S3之前一定要确保IAM权足够,否则如果您在运行 COPY、UNLOAD 或 CREATE LIBRARY 命令时收到错误消息 S3ServiceException: Access Denied,则您的集群对于 Amazon S3 没有适当的访问权限。如下:

创建 IAM 角色以允许 Amazon Redshift 集群访问 S3服务

  • step1:进入https://console.aws.amazon.com/iam/home#/roles,创建role。

  • step2:选择Redshift服务,并选择Redshift-Customizable

  • step3:搜索策略S3,找到AmazonS3FullAccess,点击下一步。

  • step4:命名角色为redshiftunload。

  • step5:打开刚定义的role并复制角色ARN。(unload命令会用到)

  • step6:进入Redshift集群,打开管理IAM角色

  • step7:选择刚定义的redshiftunload角色并应用更改。

执行unload命令卸载数据

以管道分隔符导出数据

以默认管道符号(|)的方式将数据卸载到对应的S3存储桶中,并以venue_为前缀进行存储,如下:

  1. 相关文章