【问题标题】:AWS Glue: Redshift UpsertAWS Glue:Redshift Upsert
【发布时间】:2018-08-07 10:35:13
【问题描述】:

经过一番研究,我发现由于 Redshift 不支持合并/更新插入,因此有些人正在使用临时表来更新/插入记录。由于 Redshift 也不支持过程(触发器等),是否有人对他们如何自动化此过程(lambda、数据管道等)提出建议?

【问题讨论】:

    标签: amazon-redshift aws-glue


    【解决方案1】:

    我认为没有一个正确的答案。总的来说,我知道有两种基本方法。

    1. 在您加载数据时执行的 ETL 中的显式步骤(使用 this pattern
    2. 定期处理 upserts 的批处理 cronjob

    我相信选项 1 可能是最好的方法。 AWS Data Pipeline 通过将insertMode 字段设置为OVERWRITE_EXISTING 来支持RedshiftCopyActivity

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

    另一种方法(选项 2)是让您的 ETL 只是将新数据附加到暂存表(您可以使用 AWS Firehose 进行类似的操作),然后您可以将其与计划的 cronjob 一起使用以更新目标表预定的依据。这样做的好处是您的 ETL 更简单,但 cronjob 成为另一个故障点。

    【讨论】:

    • 感谢您的反馈,非常感谢。目前我有一个处理 Redshift upsert 的 lambda,它响应上传到 S3 存储桶的数据。现在似乎工作正常,因为每天只有几个事件。我肯定也会研究数据管道。干杯!
    猜你喜欢
    • 2022-06-17
    • 1970-01-01
    • 2020-02-13
    • 2016-10-01
    • 1970-01-01
    • 2021-12-14
    • 2010-11-11
    • 2013-12-17
    • 2021-02-25
    相关资源
    最近更新 更多