AWS Glue:Redshift Upsert

时间:2018-02-27 17:19:48

标签: amazon-redshift aws-glue

经过一些研究后,我发现由于Redshift不支持merge / upsert,因此有些人正在使用登台表来更新/插入记录。由于Redshift也不支持程序(触发器等),是否有人建议他们如何自动化这个过程(lambda,数据管道等)?

1 个答案:

答案 0 :(得分:2)

我认为没有一个正确的答案。从广义上讲,我知道有两种基本方法。

  1. 在您加载数据时执行的ETL中的明确步骤(使用this pattern
  2. 定期处理upserts的批处理cronjob
  3. 我相信选项1可能是最好的方法。通过将insertMode字段设置为OVERWRITE_EXISTING,AWS Data Pipeline使用RedshiftCopyActivity支持此功能。

    在我的工作中,我们在数据管道中手动完成了这一操作,方法是将load命令运行到staging表,并在同一个sql事务中运行upsert。

    另一种方法(选项2)是让您的ETL只是将新数据附加到临时表(您可以使用AWS Firehose进行此类操作),然后将其与预定的cronjob一起使用以更新目标表预定的基础。这样做的好处是你的ETL更简单,但是cronjob成为另一个失败点。