【问题标题】:SCD2 Implementation in Redshift using AWS GLue Pyspark使用 AWS GLue Pyspark 在 Redshift 中实施 SCD2
【发布时间】:2020-11-02 23:34:54
【问题描述】:

我需要将数据从 S3 移动到 Redshift。目前我正在使用 Glue 进行工作。 当前要求:

  1. 将redshift表中记录的主键与传入文件进行比较,如果发现匹配关闭旧记录的结束日期(将其从高日期更新到当前日期)并插入新记录。
  2. 如果未找到主键匹配,则插入新记录。 执行: 我已经使用 pyspark 在 Glue 中实现了它,步骤如下: 创建的数据框将涵盖三种场景:
  3. 如果找到匹配项,则将现有记录的结束日期更新为当前日期。
  4. 将新记录插入到找到 PPK 匹配的 Redshift 表中
  5. 在未找到 PPK 匹配的 Redshift 表中插入新记录

最后,将这三个数据框合并为一个,并将其写入红移表。

使用这种方法,旧记录(具有高日期值)和新记录(使用当前日期值更新)都会出现。

有没有办法使用 pyspark 删除具有高日期值的旧记录?请指教。

【问题讨论】:

    标签: pyspark apache-spark-sql amazon-redshift aws-glue scd2


    【解决方案1】:

    我们已经成功实现了所需的功能,其中我们使用 AWS RDS [PostGreSql] 作为数据库服务,使用 GLUE 作为 ETL 服务。我的建议不是计算 sparkdataframes 中的增量,而是创建存储过程并在 pyspark Glue Shell 中调用它们会更容易和优雅的解决方案。 [例如:S3 存储桶 -> 暂存表 -> 目标表]

    此外,如果您的执行逻辑在 10 分钟内执行完毕,我建议您使用 python shell 并使用外部库(例如 psycopyg2 / sqlalchemy)进行 DB 操作。

    【讨论】:

      猜你喜欢
      • 2020-02-04
      • 2021-11-02
      • 2018-01-30
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 2021-05-30
      • 2019-02-23
      相关资源
      最近更新 更多