请问大家,我按照flink-cdc-connectors readme 上面的datastream API 例子读取postgresql 的一个table, 读出的数据debezium json里的before 都是null, after 是对的,不管是insert or update, before全是null, 请问哪里设置不对?我用的是version 2.4.1,谢谢?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
如果在使用 Flink CDC Connectors 中的 DataStream API 读取 PostgreSQL 表时,无论是插入还是更新操作,Debezium JSON 中的 before 字段都是 null,这可能是由于以下原因导致的:
检查数据库配置:确保你正确配置了 Flink CDC Connectors 中的 PostgreSQL 连接参数,包括正确的主机名、端口号、数据库名、用户名和密码等。如果连接参数不正确,可能会导致读取到的数据中 before 字段为 null。
检查表定义:确认所读取的表是否具有主键或唯一索引。Debezium CDC Connector 需要基于主键或唯一索引来跟踪数据的变化并生成 before 和 after 数据。如果表没有定义主键或唯一索引,可能会导致 before 字段为 null。
检查 CDC 配置:确保正确配置了 Flink CDC Connectors 的 CDC(Change Data Capture)参数,包括将适当的解析器指定给 CDC Connector,并设置正确的 CDC 起始位置和事件处理配置。
检查 Debezium 版本:请确保你使用的 Debezium 版本与 Flink CDC Connectors 兼容。不同版本的 Debezium 可能会对 JSON 结构有所不同。
检查字段映射:检查你的 Flink CDC Connectors 配置是否正确映射了表中的字段。特别是检查是否正确指定了主键或唯一索引。
如果以上步骤都没有解决问题,建议你提供更详细的信息,包括 Flink CDC Connectors 和 Debezium 的配置以及读取的表结构。这样我们可以更深入地分析和帮助你找到问题所在。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。