将数据从本地迁移到 AWS redshift

Posted

技术标签:

【中文标题】将数据从本地迁移到 AWS redshift【英文标题】:Move data from on-premise to AWS redshift 【发布时间】:2019-01-17 17:45:17 【问题描述】:

我需要将数据从本地移动到 AWS redshift(region1)。最快的方法是什么?

1) 使用 AWS snowball 将本地迁移到 s3 (region1),然后使用 Redshift 的 SQL COPY cmd 将数据从 s3 复制到 redshift。

2) 使用 AWS Datapipeline(注意 region1 中还没有 AWS Datapipeline。所以我将在最接近 region1 的 region2 中设置一个 Datapipeline)将本地数据移动到 s3(region1)和另一个 AWS DataPipeline(region2) ) 使用 AWS 提供的模板将数据从 s3 (region1) 复制到 redshift (region1)(此模板使用 RedshiftCopyActivity 将数据从 s3 复制到 redshift)?

以上哪个解决方案更快?还是有其他解决方案?此外,RedshiftCopyActivity 会比直接运行 redshift 的 COPY cmd 更快吗?

注意这是一次移动,所以我不需要 AWS 数据管道的调度功能。

这是 AWS Datapipeline 的链接: AWS Data Pipeline。它说:AWS Data Pipeline 是一种 Web 服务,可帮助您在不同的 AWS 计算和存储服务以及本地数据源之间可靠地处理和移动数据......

【问题讨论】:

多少TB的数据?为什么您认为 aws 数据管道而不是简单的(aws cli)上传到 s3?我不知道数据管道服务在这方面做得很好。你能指出一个显示这个的网页吗? 乔恩斯科特:我添加了链接。它说:AWS Data Pipeline 是一种 Web 服务,可帮助您在不同的 AWS 计算和存储服务以及本地数据源之间可靠地处理和移动数据 肯定会选择将数据加载到 s3,而不是使用数据管道。从那里您可以灵活地使用胶水/雅典娜/reddshift load/emr 等。您可以在加载数据之前对数据进行 gzip 压缩,并在可行的情况下以高效和有效的方式组织它。 (您可能需要专业的帮助)。您可以通过 Internet 手动加载数据(可以压缩 1TB 左右),或者如果您有更多数据,则使用雪球。 乔恩斯科特:谢谢你的回答。看起来 AWS DataPipeline 仅适用于每日同步等计划移动。在内部它调用 s3 cp 或 redshift LOAD 与我可以手动执行的操作相同。所以它不会使运动更快,只是使运动“流水线”。 我对数据管道的问题是它有点“脆弱”——与大多数 AWS 产品不同。我已经将它与几个客户一起使用过,一段时间后不得不中止其他方法。如果你不断地在很多桌子上使用它,它也可能会贵很多。 【参考方案1】:

归结为网络带宽与数据量。

数据需要从当前的本地位置移动到 Amazon S3。

这可以通过以下方式完成:

网络副本 AWS 雪球

您可以使用online network calculator 计算通过网络连接复制需要多长时间。

然后,将其与使用 AWS Snowball 复制数据进行比较。

选择更便宜/更容易/更快的那个。

数据在 Amazon S3 中后,使用 Amazon Redshift COPY 命令加载它。

如果不断添加数据,您需要找到一种方法来向 Redshift 发送持续更新。这可能通过网络复制更容易。

使用数据管道没有任何好处。

【讨论】:

感谢约翰·罗滕斯坦。看起来你们都不喜欢 AWS 数据管道,因为它是小尺寸的。我可能会使用雪球或自己设置系统

以上是关于将数据从本地迁移到 AWS redshift的主要内容,如果未能解决你的问题,请参考以下文章

从亚马逊(AWS)迁移到阿里云

将数据库从 Heroku 迁移到 AWS

将数据从 Google Analytics 迁移到 AWS Athena

利用AWS迁移利器SMS实现本地虚拟机到AWS迁移过程简介

如何将现有的 Web 应用程序从 Heroku 迁移到 AWS

从 Parse 迁移到 AWS Dynamo DB