我们正在使用Storm与Kafka和ZooKeeper。我们有一种情况,我们不得不删除一些主题,并用不同的名称重新创建它们。除了从新主题名称中读取之外,我们的卡夫卡鲸鱼喷水保持不变。但是现在,当尝试从新主题中读取时,spouts正在使用旧主题分区的偏移量。因此,my-topic-name分区0的尾部位置将为500,但偏移量将为10000。
有没有办法重置偏移位置,使其与主题的尾部匹配?
答案 0 :(得分:5)
有多个选项(因为Storm KafkaSpout
没有提供任何API来定义起始偏移量。)
__consumer_offsets
的偏移量(这也很棘手,可能会删除您想要保留的其他偏移量)seek()
以您需要的方式操纵偏移量并commit()
偏移量。此客户端必须使用与KafkaSpout
相同的组ID,并且必须订阅相同的主题。此外,您需要确保此客户端应用程序正在运行单个使用者组成员,以便分配所有分区。
对于Kafka Streams,有一个“应用程序重置工具”,可以执行类似的操作来处理已提交的偏移量。如果您想获得一些详细信息,可以阅读此博客文章http://www.confluent.io/blog/data-reprocessing-with-kafka-streams-resetting-a-streams-application/
(免责声明:我是帖子的作者,它是关于Kafka Streams的 - 但是,基本的偏移操作思想是相同的)