将 AWS Redshift 中的数据操作到计划中

Posted

技术标签:

【中文标题】将 AWS Redshift 中的数据操作到计划中【英文标题】:Manipulating Data Within AWS Redshift to a Schedule 【发布时间】:2016-11-06 23:48:25 【问题描述】:

当前设置:

SQL Server OLTP 数据库 从 OLTP 更新的 AWS Redshift OLAP 数据库 每 20 分钟通过 SSIS 一次

我们的客户只能访问 OLAP Db

要求:

一位客户需要创建一些额外的表并将其填充到计划中,这可以通过聚合 AWS Redshift 中已有的数据来完成。

挑战:

这仅适用于一位客户,因此我无法利用核心流程来填充 AWS;该过程必须是独立的,并且将移交给不使用 SSIS 并且不希望开始的客户。我正在考虑使用 Data Pipeline,但在客户所在的市场上尚不可用。

问题:

我的选择是什么?我知道有许多partners 提供类似 ETL 的解决方案,但这似乎太过分了,最终我想做的就是按计划执行一系列 SQL 语句,并带有某种形式的错误处理/警报。客户和管理层的偏好是不使用定制应用程序来执行此操作,因此是 Data Pipeline 的预期用途。

【问题讨论】:

我还没有使用服务 Data Pipeline,但我认为在您的情况下,您可以简单地使用 Lambda 服务来操作 AWS Redshift 中的数据。 Lambda 在中国也无法使用,直到明年某个时候。在此期间,我正在寻找替代方案。不过感谢您的建议。 【参考方案1】:

要使用数据管道将数据从 AWS Redshift 导出到另一个数据源,您可以遵循类似于 https://github.com/awslabs/data-pipeline-samples/tree/master/samples/RedshiftToRDS 的模板,使用该模板可以将数据从 Redshift 传输到 RDS。但是,您可以添加一个 JdbcDatabase (http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-jdbcdatabase.html),而不是使用 RDSDatabase 作为接收器。模板https://github.com/awslabs/data-pipeline-samples/blob/master/samples/oracle-backup/definition.json 提供了有关如何使用 JdbcDatabase 的更多详细信息。

https://github.com/awslabs/data-pipeline-samples/tree/master/samples 中有许多此类模板可供参考。

【讨论】:

不幸的是,Data Pipeline 在我的客户所在的地区(中国)不可用,这是我的问题 - 我可以使用什么来代替 Data Pipeline? Lambda 也不可用。【参考方案2】:

我做的事情和你完全一样,但是我使用 lambda 服务来执行我的 ETL。 lambda 服务的一个缺点是,它最多只能运行 5 分钟(最初是 1 分钟)。 因此,对于 ETL 超过 5 分钟,我计划在 AWS 中设置 php 服务器,并通过 SQL 注入运行我的查询,并在 cron 函数的帮助下随时安排。

【讨论】:

以上是关于将 AWS Redshift 中的数据操作到计划中的主要内容,如果未能解决你的问题,请参考以下文章

AWS DMS Redshift 作为目标

将 Parquet 文件从 AWS Glue 加载到 Redshift

无法将数据复制到 AWS RedShift

将数据从 AWS Redshift 导入到 BI Tool 的最快方法

使用 NodeJS 将 RabbitMQ 导入 AWS Redshift

如何编写 AWS Glue 脚本以将新数据插入 Redshift 表