Flink CDC这两个获取出来的位点有什么不一样嘛?
意义,我看从sourceOffset获取出来的他在一个批量操作的情况下位点没变动,从source获取出来的位点是变动的,但是如果指定位点启动的情况下,传入source获取出来的位点会报错,而传入sourceOffset获取出来的位点则不会报错
从你提供的图片来看,sourceOffset
和source
获取出来的位点(pos)是不同的。这可能是因为它们获取位点的来源和方法不同。
sourceOffset
是从Kafka的偏移量(offset)中获取位点的。每个Kafka消息都有一个偏移量,它表示这个消息在主题分区中的位置。当Flink消费Kafka消息时,它会维护一个关于每个分区当前消费到的偏移量的状态,这个状态就是sourceOffset
。因此,sourceOffset
获取的位点是基于Kafka消息的偏移量,它在一次批处理操作中可能不会有变化,除非有新的Kafka消息到达。
source
是从Kafka消息的内容中获取位点的。Kafka消息的内容是一个包含各种字段的结构体,其中有一个字段是表示位点的。这个字段的值可能在一次批处理操作中发生变化,因为它是基于实际的数据变化的。
在你的代码中,你尝试使用source
获取的位点(pos1)来初始化一个MysqlDataChangeInfo
对象。但是,这个对象可能需要一个特定的位点格式,而这个格式可能与source
获取的位点不符。这就是为什么当你传入source
获取的位点时会报错,而传入sourceOffset
获取的位点则不会报错的原因。
你需要检查MysqlDataChangeInfo
对象的构造函数和getInt64
方法,看看它们需要的位点格式是什么,然后确保你的代码能够正确地获取到这个格式的位点。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。