开发者社区> 问答> 正文

Flink kafka Consumer的消费起始位置设置在哪里?

Flink kafka Consumer的消费起始位置设置在哪里?

展开
收起
游客qzzytmszf3zhq 2021-12-07 20:16:46 1383 0
1 条回答
写回答
取消 提交回答
  • 如何设置作业从kafka消费数据最开始的起始位置,这一部分flink也提供了非常好的封装。在构造好的FlinkKafkaConsumer类后面调用如下相应函数,设置合适的其实位置。

    setStartFromGroupOffsets,也是默认的策略,从group offset位置读取数据,group offset指的是kafka broker端记录的某个group的最后一次的消费位置。但是kafka broker端没有该group信息,会根据kafka的参数"auto.offset.reset"的设置来决定从哪个位置开始消费。

    setStartFromEarliest,从kafka最早的位置开始读取。

    setStartFromLatest,从kafka最新的位置开始读取。

    setStartFromTimestamp(long),从时间戳大于或等于指定时间戳的位置开始读取。Kafka时戳,是指kafka为每条消息增加另一个时戳。该时戳可以表示消息在proudcer端生成时的时间、或进入到kafka broker时的时间。

    setStartFromSpecificOffsets,从指定分区的offset位置开始读取,如指定的offsets中不存某个分区,该分区从group offset位置开始读取。此时需要用户给定一个具体的分区、offset的集合。

    一些具体的使用方法可以参考下图。需要注意的是,因为flink框架有容错机制,如果作业故障,如果作业开启checkpoint,会从上一次checkpoint状态开始恢复。或者在停止作业的时候主动做savepoint,启动作业时从savepoint开始恢复。这两种情况下恢复作业时,作业消费起始位置是从之前保存的状态中恢复,与上面提到跟kafka这些单独的配置无关。

    2021-12-07 20:16:59
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Java Spring Boot开发实战系列课程【第16讲】:Spring Boot 2.0 实战Apache Kafka百万级高并发消息中间件与原理解析 立即下载
MaxCompute技术公开课第四季 之 如何将Kafka数据同步至MaxCompute 立即下载
消息队列kafka介绍 立即下载