Amazon Redshift数据迁移到MaxCompute

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: Amazon Redshift数据迁移到MaxCompute

Amazon Redshift数据迁移到MaxCompute

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

image

前提条件

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

  • 配置新连接,选择新建的Driver,并复制JDBC url地址、数据库用户名和密码并勾选Autocommit。

image

如果在配置过程中发现一只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中进行数据预览,如下所示:

image

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

image

image

卸载数据到Amazon S3

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

image

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

image

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

image

image

  • step4:命名角色为redshiftunload。

image

image

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

image

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

image

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

image

执行unload命令卸载数据

以管道分隔符导出数据

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

unload ('select * from venue')
to 's3://aws2oss/venue_' 
iam_role '<新建的redshiftunload角色对应的ARN>';
--parallel off; --连续卸载,UNLOAD 将一次写入一个文件,每个文件的大小最多为 6.2 GB

执行效果图如下:
image

进入Amazon S3对应的存储桶中可以查看到有两份文件,且以venue_为前缀的,可以打开文件查看下数据。

image

数据如下,以管道字符(|)分隔:

image

以指标符导出数据

要将相同的结果集卸载到制表符分隔的文件中,请发出下面的命令:

unload ('select * from venue') 
to 's3://aws2oss/venue_' 
iam_role '<新建的redshiftunload角色对应的ARN>'
delimiter as '\t';

image

打开文件可以预览到数据文件如下:

image


----为了MaxCompute更方便的读取数据,我们采用以逗号(,)分隔--

unload ('select * from venue') 
to 's3://aws2oss/venue_' 
iam_role '<新建的redshiftunload角色对应的ARN>'
delimiter as ','
NULL AS '0';

image

更多关于unload的命令说明详见:https://docs.aws.amazon.com/zh_cn/redshift/latest/dg/r_UNLOAD.html

Amazon S3无缝切换到OSS

在线迁移工具只支持同一个国家的数据源,针对不同国家数据源迁移建议用户采用OSS迁移工具,自己部署迁移服务并且购买专线来完成,详见:https://help.aliyun.com/document_detail/56990.html

OSS提供了S3 API的兼容性,可以让您的数据从AWS S3无缝迁移到阿里云OSS上。从AWS S3迁移到OSS后,您仍然可以使用S3 API访问OSS。更多可以详见S3迁移教程

背景信息

① 执行在线迁移任务过程中,读取Amazon S3数据会产生公网流出流量费,该费用由Amazon方收取。
② 在线迁移默认不支持跨境迁移数据,若有跨境数据迁移需求需要提交工单来申请配置任务的权限。

准备工作

Amazon S3前提工作

接下来以RAM子账号来演示Amazon S3数据迁移到Aliyun OSS上。

  • 预估迁移数据,进入管控台中确认S3中有的存储量与文件数量。
  • 创建迁移密钥,进入AWS IAM页面中创建用户并赋予AmazonS3ReadOnlyAccess权限。
  • 添加用户-->访问类型(编程访问,AK信息)-->赋予AmazonS3ReadOnlyAccess权限-->记录AK信息。

step1:进入IAM,选择添加用户。
![image.png]image

step2:新增用户并勾选创建AK。

image

step3:选择直接附加现有策略,并赋予AmazonS3ReadOnlyAccess权限。

image

step4:记录AK信息,在数据迁移中会用到。

image

Aliyun OSS前提工作

  • 阿里云OSS相关操作,新创建bucket:

image

  • 创建RAM子账号并授予OSS bucket的读写权限和在线迁移管理权限。

image

迁移实施

迁移会占用源端和目的端的网络资源;迁移需要检查源端和目的端文件,如果存在文件名相同且源端的最后更新时间少于目的端,会进行覆盖。

【创建源地址:】

image
image

具体配置项说明详见:https://help.aliyun.com/document_detail/95159.html
【创建目标地址:】

image
image

具体配置项说明详见:https://help.aliyun.com/document_detail/95159.html

创建迁移任务

从左侧tab页面中找到迁移任务,并进入页面,点击创建迁移任务。
![image.png]image

image

---->OSS中的数据如下:

image

MaxCompute直接加载OSS数据

授权

在查询OSS上数据之前,需要对将OSS的数据相关权限赋给MaxCompute的访问账号,授权详见授权文档
MaxCompute需要直接访问OSS的数据,前提需要将OSS的数据相关权限赋给MaxCompute的访问账号,您可通过以下方式授予权限:

  1. 当MaxCompute和OSS的owner是同一个账号时,可以直接登录阿里云账号后,点击此处完成一键授权
  2. 若MaxCompute和OSS不是同一个账号,此处需由OSS账号登录进行授权,详见文档

创建外部表

在DataWorks中创建外部表,如下图所示:

image

创建MaxCompute外部表DDL语句:

CREATE EXTERNAL TABLE IF NOT EXISTS venue_external
(
VENUEID bigint,
VENUENAME string,
VENUECITY string,
VENUESTATE string,
VENUESEATS bigint
)
STORED BY 'com.aliyun.odps.CsvStorageHandler' -- (1)
WITH SERDEPROPERTIES (
 'odps.properties.rolearn'='acs:ram::*****:role/aliyunodpsdefaultrole'
) -- (2)
LOCATION 'oss://oss-cn-shanghai-internal.aliyuncs.com/redshift2odps/s3/'; -- (3)(4)
  • com.aliyun.odps.CsvStorageHandler是内置的处理CSV格式文件的StorageHandler,它定义了如何读写CSV文件。您只需指明这个名字,相关逻辑已经由系统实现。如果用户在数据卸载到S3时候自定义了其他分隔符那么,MaxCompute也支持自定义分隔符的Handler,详见:https://help.aliyun.com/document_detail/45389.html

可以直接查询返回结果:
select * from venue_external limit 10;

DataWorks上执行的结果如下图所示:

image

创建内部表固化数据

如果后续还需要做复杂的查询且数据量特别大的情况下,建议将外部表转换为内部表,具体示意如下:
create table if not exists venue as select * from venue_external;

image

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
6月前
|
分布式计算 关系型数据库 数据库连接
MaxCompute数据问题之数据迁移如何解决
MaxCompute数据包含存储在MaxCompute服务中的表、分区以及其他数据结构;本合集将提供MaxCompute数据的管理和优化指南,以及数据操作中的常见问题和解决策略。
|
6月前
|
机器学习/深度学习 SQL 分布式计算
MaxCompute产品使用合集之大数据计算MaxCompute如果要把A的数据迁移到B,操作步骤是什么
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
4月前
|
分布式计算 DataWorks 调度
MaxCompute产品使用合集之如何将数据迁移到CDH Hive
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
6月前
|
分布式计算 DataWorks 大数据
MaxCompute操作报错合集之在使用 MaxCompute 的 MMA(Multi-Modal Analytics)进行跨 Region 数据迁移时,在配置数据源时遇到错误,如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
6月前
|
SQL 分布式计算 大数据
大数据技术之集群数据迁移
大数据技术之集群数据迁移
91 0
|
21天前
|
存储 机器学习/深度学习 分布式计算
大数据技术——解锁数据的力量,引领未来趋势
【10月更文挑战第5天】大数据技术——解锁数据的力量,引领未来趋势
|
22天前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
43 3
|
1天前
|
存储 安全 大数据
大数据隐私保护:用户数据的安全之道
【10月更文挑战第31天】在大数据时代,数据的价值日益凸显,但用户隐私保护问题也愈发严峻。本文探讨了大数据隐私保护的重要性、面临的挑战及有效解决方案,旨在为企业和社会提供用户数据安全的指导。通过加强透明度、采用加密技术、实施数据最小化原则、加强访问控制、采用隐私保护技术和提升用户意识,共同推动大数据隐私保护的发展。
|
5天前
|
SQL 存储 大数据
大数据中数据提取
【10月更文挑战第19天】
13 2
|
21天前
|
SQL 消息中间件 大数据
大数据-159 Apache Kylin 构建Cube 准备和测试数据(一)
大数据-159 Apache Kylin 构建Cube 准备和测试数据(一)
33 1

相关产品

  • 云原生大数据计算服务 MaxCompute