如何捕获 aws 胶水中的数据变化?

我们在本地 sql-server 中有源数据。我们正在使用 AWS 胶水从 sql-server 获取数据并将其放置到 S3。谁能帮助我们如何在 AWS Glue 中实施变更数据捕获?

注意 - 我们不想使用 AWS DMS。

stack overflow How to capture data change in aws glue?
原文答案

答案:

作者头像

我只知道胶水书签。它们将帮助您处理新记录(插入),但不会帮助您处理通常通过真正的 CDC 解决方案获得的更新和删除。

不确定您的用例,但您可以查看以下项目。它有一个非常有效的 diff 功能,并且通过正确的选项,可以为您提供类似 CDC 的输出

https://github.com/G-Research/spark-extension/blob/master/DIFF.md

作者头像

不可能通过直接的粘合数据提取来实现变更数据捕获。如果您的表包含 update_at 时间戳列,则作业书签可以帮助您识别插入和更新,但它不会涵盖删除情况。您实际上需要 CDC 解决方案。

虽然 AWS 直接连接到数据库源是一个很好的解决方案,但由于成本问题,我强烈反对将其用于增量数据提取。这就像使用卡车运送一瓶饮用水一样。

正如您已经评论的那样,我不是 AWS DMS 的粉丝,但对于强大的 CDC 解决方案,像 Debezium 这样的工具可能是一个完美的解决方案。它与 kafka 和 Kinesis 集成。您可以轻松地将流直接下沉到 s3。 Debezium 使您可以捕获删除并将特殊的布尔 __delete 列附加到您的数据中,因此您的胶水 etl 可以使用此字段管理这些已删除记录的删除。

作者头像

您可以将 AWS DMS 用于 CDC,然后使用 Apache IceBerg 连接与 Glue 数据目录来实现此目的: https://aws.amazon.com/blogs/big-data/implement-a-cdc-based-upsert-in-a-data-lake-using-apache-iceberg-and-aws-glue/