tongchenkeji 发表于:2023-7-13 11:16:470次点击 已关注取消关注 关注 私信 大佬们,flinkcdc 监听update操作,获取不到修改前的数据,这是什么原因造成的?[阿里云实时计算 Flink版] 暂停朗读为您朗读 大佬们,flinkcdc 监听update操作,获取不到修改前的数据,这是什么原因造成的? 「点点赞赏,手留余香」 赞赏 还没有人赞赏,快来当第一个赞赏的人吧! 海报 实时计算Flink版# 实时计算 Flink版3179
算精通AM 2023-11-27 18:32:31 1 在 Flink CDC 中,当使用 upsert 输出格式进行增量同步时,可能会遇到无法获取修改前数据的问题。这是因为 upsert 输出格式只会输出变更后的数据,而不会输出修改前的数据。 如果您需要获取修改前的数据,可以考虑使用 debezium-json 或 json-schema 格式进行输出。这些输出格式会将变更前后的数据都输出,您可以通过比较变更前后的数据来获取修改前的数据。 需要注意的是,使用 debezium-json 或 json-schema 输出格式可能会对性能和网络带宽产生一定的影响,因为输出的数据量会比 upsert 格式更大。因此,在选择输出格式时,需要综合考虑数据量、网络带宽和性能等因素。
Star时光AM 2023-11-27 18:32:31 2 在 Flink CDC 中监听 update 操作时,无法获取修改前的数据是因为 Flink CDC 默认只会将变更后的数据作为事件输出,并不包含变更前的数据。这是由 CDC 数据源和 Flink 的实现机制所决定的。 当使用 Flink CDC 监听数据库的变更操作时,它会识别到数据的变更并生成相应的事件流。对于 update 操作,Flink CDC 只会输出包含变更后的数据的事件,而不会包含变更前的数据。 要获取修改前的数据,您可以考虑以下几种方式: 1. 使用 Change Data Capture (CDC) 工具:如果您的数据库支持 CDC 功能,可以使用专门的 CDC 工具来捕获数据库的变更日志。这些变更日志将包含完整的变更前后数据信息,您可以通过解析和处理这些日志来获取变更前的数据。 2. 开启数据库的历史记录或审计功能:某些数据库提供了历史记录或审计功能,可以记录所有的变更操作,并包含变更前后的数据信息。您可以开启该功能并查询历史记录以获取变更前的数据。 3. 在应用层进行额外的查询:如果没有其他手段获取变更前的数据,您可以在 Flink 中的处理逻辑中进行额外的查询,以获取变更前的数据。例如,在处理 update 事件时,可以根据已知的唯一标识符再次查询数据库,获取变更前的数据。 需要注意的是,以上方法都可能会带来额外的开销和复杂性。根据具体业务需求和数据库特性,选择适合的方式来获取变更前的数据。
xin在这AM 2023-11-27 18:32:31 3 不是cdc的,是flink的,https://nightlies.apache.org/flink/flink-docs-release-1.14/zh/docs/connectors/table/formats/debezium/,此回答整理自钉群“Flink CDC 社区”
在 Flink CDC 中,当使用 upsert 输出格式进行增量同步时,可能会遇到无法获取修改前数据的问题。这是因为 upsert 输出格式只会输出变更后的数据,而不会输出修改前的数据。
如果您需要获取修改前的数据,可以考虑使用 debezium-json 或 json-schema 格式进行输出。这些输出格式会将变更前后的数据都输出,您可以通过比较变更前后的数据来获取修改前的数据。
需要注意的是,使用 debezium-json 或 json-schema 输出格式可能会对性能和网络带宽产生一定的影响,因为输出的数据量会比 upsert 格式更大。因此,在选择输出格式时,需要综合考虑数据量、网络带宽和性能等因素。
在 Flink CDC 中监听 update 操作时,无法获取修改前的数据是因为 Flink CDC 默认只会将变更后的数据作为事件输出,并不包含变更前的数据。这是由 CDC 数据源和 Flink 的实现机制所决定的。
当使用 Flink CDC 监听数据库的变更操作时,它会识别到数据的变更并生成相应的事件流。对于 update 操作,Flink CDC 只会输出包含变更后的数据的事件,而不会包含变更前的数据。
要获取修改前的数据,您可以考虑以下几种方式:
1. 使用 Change Data Capture (CDC) 工具:如果您的数据库支持 CDC 功能,可以使用专门的 CDC 工具来捕获数据库的变更日志。这些变更日志将包含完整的变更前后数据信息,您可以通过解析和处理这些日志来获取变更前的数据。
2. 开启数据库的历史记录或审计功能:某些数据库提供了历史记录或审计功能,可以记录所有的变更操作,并包含变更前后的数据信息。您可以开启该功能并查询历史记录以获取变更前的数据。
3. 在应用层进行额外的查询:如果没有其他手段获取变更前的数据,您可以在 Flink 中的处理逻辑中进行额外的查询,以获取变更前的数据。例如,在处理 update 事件时,可以根据已知的唯一标识符再次查询数据库,获取变更前的数据。
需要注意的是,以上方法都可能会带来额外的开销和复杂性。根据具体业务需求和数据库特性,选择适合的方式来获取变更前的数据。
不是cdc的,是flink的,https://nightlies.apache.org/flink/flink-docs-release-1.14/zh/docs/connectors/table/formats/debezium/,此回答整理自钉群“Flink CDC 社区”