Amazon Redshift数据迁移到MaxCompute

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。
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更方便的读取数据,我们采用以逗号(,)分隔--`sql
unload (‘select * from venue‘)
to ‘s3://aws2oss/venue_‘
iam_role ‘<新建的redshiftunload角色对应的ARN>‘
delimiter as ‘,‘
NULL AS ‘0‘;

更多关于unload的命令说明详见:https://docs.aws.amazon.com/zh_cn/redshift/latest/dg/r_UNLOAD.html
<a name="dbfe35f7"></a>

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迁移教程
<a name="66a56ac6"></a>

背景信息

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

<a name="88210852"></a>

准备工作

<a name="ed3070e2"></a>

Amazon S3前提工作

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

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

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

step2:新增用户并勾选创建AK。<br />

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

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

<a name="75e5510f"></a>

Aliyun OSS前提工作

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

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

<a name="582bdcd8"></a>

迁移实施

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

【创建源地址:】<br />

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

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

<a name="b4361e56"></a>

创建迁移任务

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

---->OSS中的数据如下:<br />

<a name="ebdc286b"></a>

MaxCompute直接加载OSS数据

<a name="98a315c0"></a>

授权

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

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

<a name="a6dbe7f5"></a>

创建外部表

在DataWorks中创建外部表,如下图所示:<br />

创建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

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

DataWorks上执行的结果如下图所示:<br />

<a name="189c0f78"></a>

创建内部表固化数据

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

原文地址:https://blog.51cto.com/14031893/2369385

时间: 2024-08-26 15:55:14

Amazon Redshift数据迁移到MaxCompute的相关文章

FineBI学习系列之FineBI与Amazon Redshift数据连接(图文详解)

不多说,直接上干货! 这是来自FineBI官网提供的帮助文档 http://help.finebi.com/http://help.finebi.com/doc-view-570.html 目录: 1.描述 2.操作 1.描述 Amazon Redshift是一种快速且完全托管的 PB 级数据仓库,与传统的数据仓库仓储及分析用数据库相比具有列式数据存储.高级压缩.大规模并行处理(MPP)等优点.本章我们将介绍如何在FineBI中连接Amazon Redshift数据库. 2.操作 2.1 配置信

JSON数据从OSS迁移到MaxCompute最佳实践

摘要: 本文为您介绍如何利用DataWorks数据集成将JSON数据从OSS迁移到MaxCompute,并使用MaxCompute内置字符串函数GET_JSON_OBJECT提取JSON信息. 本文为您介绍如何利用DataWorks数据集成将JSON数据从OSS迁移到MaxCompute,并使用MaxCompute内置字符串函数GET_JSON_OBJECT提取JSON信息. 数据上传OSS将您的JSON文件重命名后缀为TXT文件,并上传到OSS.本文中使用的JSON文件示例如下. {"stor

利用Tsunami UDP将大数据迁移至云中

当你的数据规模达到PB级别的时候,想要移动这样大规模数据时就会变的费时费力,这也是企业在利用AWS规模化和弹性优势处理分析任务时面临的最大挑战之一.本文主要介绍了加速文件传输协议,谈到如何利用Tsunami DUP实现将大规模数据迁移到云中,其中利用UDP处理数据传输,TCP负责连接控制. 值得一提的是,与SCP.FTP或者HTTP等纯粹基于TCP的协议不同,这些混合型UDP/TCP协议处理数据的吞吐量更加出色,它可以充分利用当前的可用带宽的情况下,不易受到网络延迟的影响,这些特性使其成为远距离

amazon redshift 分析型数据库特点——本质还是列存储

Amazon Redshift 是一种快速且完全托管的 PB 级数据仓库,使您可以使用现有的商业智能工具经济高效地轻松分析您的所有数据.从最低 0.25 USD 每小时 (不承担任何义务) 直到每年每 TB 1,000 USD (PB 级),成本不到传统解决方案的十分之一.客户通常进行 3 倍压缩,也就是将其成本降低到每年每 TB (未压缩) 333 USD. 问:与最传统的数据仓库存储及分析用数据库相比,Amazon Redshift 的性能如何? Amazon Redshift 使用各种创新

大数据平台Hive数据迁移至阿里云ODPS平台流程与问题记录

一.背景介绍 最近几天,接到公司的一个将当前大数据平台数据全部迁移到阿里云ODPS平台上的任务.而申请的这个ODPS平台是属于政务内网的,因考虑到安全问题当前的大数据平台与阿里云ODPS的网络是不通的,所以不能使用数据采集工作流模板. 然而,考虑到原大数据平台数据量并不是很大,可以通过将原大数据平台数据导出到CSV文件,然后再将CSV文件导入到ODPS平台.在这个过程中踩的坑有点多,所以想写篇文档作为记录. 二.大数据平台Hive数据导出到本地 编写export_data.sh脚本如下: #!/

理论与实践:如何从Hadoop迁移到MaxCompute

摘要: MaxCompute大数据计算服务,能提供快速.完全托管的PB级数据仓库解决方案,能够使用户经济且高效地分析处理海量数据.而用户往往之前使用了Hadoop实现大数据计算任务,在选择了阿里云大数据计算服务之后,如何从Hadoop向MaxCompute进行迁移就成为了一个需要面对的问题了. 摘要:MaxCompute大数据计算服务,能提供快速.完全托管的PB级数据仓库解决方案,能够使用户经济且高效地分析处理海量数据.而用户往往之前使用了Hadoop实现大数据计算任务,在选择了阿里云大数据计算

轻松上云系列之一:本地数据迁移上云

背景信息在云计算服务高速发展的今天,如何方便快捷地将已有的服务器系统迁移上云,有着非常重要的意义.阿里云服务器迁移服务方案,即迁移服务,正是在这个需求背景下应运而生.它极大地简化了服务器系统迁移工具的使用条件.降低了使用成本,使用户的系统一键迁移到阿里云成为可能. 使用迁移服务来进行系统迁移比较便捷,您可以先参考迁云工具帮助文档了解使用条件及基本操作. 迁移流程1.熟悉迁移工具使用方法,提前做好测试演练. 2.评估迁移时间/成本,制定迁移计划. 3.正式迁移,可咨询阿里云团队支持. 数据传输服务

Apsara Clouder云计算技能认证:云数据库管理与数据迁移

一.课程介绍 二.云数据库的简介及使用场景 1.云数据库简介 云数据库基于云计算平台构建,克服了传统数据库引擎引擎的局限性,是按使用量付费,稳定可靠,可弹性伸缩的在线数据库服务.无需购买软件和硬件,也无需专人维护 IT 基础设施. 云数据库能够让您在云中轻松设置,操作和扩展数据库.它在管理耗时的数据库管理任务的同时,可提供经济实用的可调容量,是您能够腾出时间专注于应用程序和业务. 1.1云数据库的特点: 用户按存储容量和带宽的需求付费 云的可移植性可以将数据库从一个地方转移到另一个地方 按需扩展

Code First Migrations更新数据库结构(数据迁移) 【转】

背景 code first起初当修改model后,要持久化至数据库中时,总要把原数据库给删除掉再创建(DropCreateDatabaseIfModelChanges),此时就会产生一个问题,当我们的旧数据库中包含一些测试数据时,当持久化更新后,原数据将全部丢失,故我们可以引入EF的数据迁移功能来完成. 要求 已安装NuGet 过程示例 [csharp] view plaincopyprint? //原model //原model [csharp] view plaincopyprint? us