将 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 中的数据操作到计划中的主要内容,如果未能解决你的问题,请参考以下文章
将 Parquet 文件从 AWS Glue 加载到 Redshift
将数据从 AWS Redshift 导入到 BI Tool 的最快方法