定期将查询结果从 Redshift 移动到 S3 存储桶

Posted

技术标签:

【中文标题】定期将查询结果从 Redshift 移动到 S3 存储桶【英文标题】:Periodically moving query results from Redshift to S3 bucket 【发布时间】:2016-03-16 06:58:51 【问题描述】:

我的数据在 Redshift 集群的一个表中。我想定期对 Redshift 表运行查询并将结果存储在 S3 存储桶中。

我将对 S3 存储桶中的这些数据运行一些数据转换,以输入另一个系统。根据 AWS 文档,我可以使用 UNLOAD 命令,但是有没有办法定期安排此操作?我搜索了很多,但没有找到任何相关信息。

【问题讨论】:

【参考方案1】:

您可以使用Airflow 之类的计划工具来完成此任务。 Airflow 似乎无缝连接到 Redshift 和 S3。您可以有一个 DAG 操作,它定期轮询 Redshift 并将数据从 Redshift 卸载到 S3。

【讨论】:

气流中是否有用于连接红移和执行操作的包?我找不到一个 你可以试试boto。我过去用它来连接到 S3。【参考方案2】:

我不相信 Redshift 有能力定期安排查询。您需要为此使用其他服务。您可以使用 Lambda 函数,也可以在 EC2 实例上安排 cron 作业。

【讨论】:

【参考方案3】:

我相信您正在寻找 AWS 数据管道服务。

您可以使用 RedshiftCopyActivity (http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-redshiftcopyactivity.html) 将数据从 redshift 复制到 s3。

我正在从上述网址复制相关内容以备将来使用:

"您还可以使用 RedshiftCopyActivity 从 Amazon Redshift 复制到 Amazon S3。有关更多信息,请参阅 S3DataNode。 您可以使用 SqlActivity 对已加载到 Amazon Redshift 的数据执行 SQL 查询。"

如果这有帮助,请告诉我。

【讨论】:

【参考方案4】:

您应该尝试 AWS Data Pipelines。您可以安排它们定期或按需运行。我相信它会解决您的用例

【讨论】:

以上是关于定期将查询结果从 Redshift 移动到 S3 存储桶的主要内容,如果未能解决你的问题,请参考以下文章

定期运行 Redshift 查询

Python 将数据从 Redshift 加载到 S3

Node-Redshift 是不是支持复制命令(查询)将数据从 S3 加载到 Redshift?

如何在 Amazon Redshift 中定期插入数据?

AWS Glue 数据从 S3 迁移到 Redshift

Redshift 的 UNLOAD Query 生成的 S3 请求数