Flink CDC消费kafka停止后,使用sp启动,15个分区都有数据,但是有的拿到的偏移量是-1,导致中间丢数据?
当Flink CDC消费Kafka停止后,使用sp启动时,如果某些分区的偏移量为-1,则表示该分区没有可用的数据。这可能是由于在停止Flink CDC消费Kafka时未正确提交偏移量或在重新启动时未正确重置偏移量所致。
要解决这个问题,可以尝试以下思路:
检查Kafka消费者组是否已正确提交了偏移量。可以使用Kafka命令行工具或其他监控工具来查看消费者组的当前偏移量。
如果发现某些分区的偏移量为-1,则可以尝试手动设置这些分区的偏移量。可以使用Flink CDC提供的setStartupMode
方法来指定启动模式为“latest”,这将使Flink CDC从最新的偏移量开始消费数据。例如:
Properties properties = new Properties();
properties.setProperty("bootstrap.servers", "localhost:9092");
properties.setProperty("group.id", "test");
properties.setProperty("enable.auto.commit", "false");
properties.setProperty("auto.offset.reset", "earliest");
FlinkKafkaConsumer<String> consumer = new FlinkKafkaConsumer<>(
"test_topic", new SimpleStringSchema(), properties);
DataStream<String> stream = env.addSource(consumer);
stream.setStartupMode(StartupMode.LATEST);
如果仍然无法解决问题,则可能需要重新部署Flink CDC应用程序并确保正确地提交和重置偏移量。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。