Hi 蒋涛涛

Flink的kafka consumer一共有三种offset commit模式:

  1.  OffsetCommitMode.DISABLED                   完全disable offset的commit
  2.  OffsetCommitMode.ON_CHECKPOINTS   Flink的默认行为,只有当Flink 
checkpoint完成时,才会将offset commit到Kafka
  3.  OffsetCommitMode.KAFKA_PERIODIC     使用Kafka的internal 
client的默认行为,周期性将offset commit到kafka

如果不想借助checkpoint来重置kafka的offset,可以利用FlinkKafkaConsumerBase 设置 
setCommitOffsetsOnCheckpoints(false),以及在kakfa properties里面设置 
“auto.commit.enable” 为false,这样就相当于没有commit offset,作业恢复的时候,如果你们设置是从kafka consume 
from latest,既可以恢复checkpoint中的state(你们应该是想要主要恢复keyed state相关吧),也可以从最新的offset消费。

祝好
唐云
________________________________
From: wang jinhai <jinhai...@gmail.com>
Sent: Thursday, August 29, 2019 10:25
To: user-zh@flink.apache.org <user-zh@flink.apache.org>
Subject: Re: flink不清理state,从checkpoint恢复任务能重置kafka的offset讨论

可以选择从之前的某个checkpoint恢复吧


在 2019/8/29 上午10:01,“蒋涛涛”<jttsai1...@gmail.com> 写入:

    Hi everyone:

    
如题,我遇到有些数据我不应该漏了想回溯部分数据,这个时候我就需要清理state,来重置kafka的offset重新跑,可不可以保留flink任务state,从checkpoint恢复任务的时候重置kafka的offset,并从kafka那个时间段开始消费,而不需要清掉state重新跑数据。

    Regards,
    JackJiang

回复