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

时间:2016-11-06 23:48:25

标签: etl amazon-redshift amazon-data-pipeline

当前设置:

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

我们的客户只能访问OLAP Db

要求:

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

挑战:

这仅适用于一个客户,因此我无法利用核心流程来填充AWS;该过程必须是独立的,并且应交给不使用SSIS且不希望启动的客户。我正在考虑使用数据管道,但目前尚未在客户所在的市场上使用。

问题:

我的替代方案是什么?我知道有很多partners提供类似ETL的解决方案,但这似乎超过了顶层,最终我想做的就是按计划执行一系列SQL语句,并提供某种形式的错误处理/警报。客户和管理层的偏好是不使用定制的应用程序来实现这一点,因此数据管道的预期用途。

2 个答案:

答案 0 :(得分:1)

要使用datapipeline将数据从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中有许多此类模板可用作参考。

答案 1 :(得分:1)

我和你做的完全一样,但我使用lambda服务来执行我的ETL。 lambda服务的一个缺点是,它最多只能运行5分钟(最初1分钟)。

因此,对于ETL超过5分钟,我计划在AWS中设置PHP服务器并使用SQL注入我可以运行我的查询,在cron函数的帮助下随时安排。