Kafka 0.9版本从指定offset读取Topic数据遇命令报错求助
解决Kafka 0.9从指定Offset消费Topic数据的问题
Kafka 0.9版本的kafka-console-consumer.sh脚本不支持--offset参数,这个参数是在0.10.x及后续版本才引入的。另外你的命令里同时指定了--zookeeper和--bootstrap-server,0.9版本的消费者基于ZooKeeper工作,不需要--bootstrap-server,建议去掉该参数。
以下是两种可行的解决方法:
方法一:手动修改ZooKeeper中的消费者Offset
Kafka 0.9的消费者Offset存储在ZooKeeper节点中,你可以直接修改对应节点的值来指定起始Offset:
- 连接到ZooKeeper:
zkCli.sh -server 127.0.0.1:2181
- 查看目标消费者组在指定分区的当前Offset(如果是新组,该节点可能不存在):
get /consumers/<你的消费者组ID>/offsets/<topic_name>/<分区号>
- 将节点值设置为目标Offset:
set /consumers/<你的消费者组ID>/offsets/<topic_name>/<分区号> <目标Offset值>
- 启动消费者并指定该组:
/products/software/Apache/kafka/bin/kafka-console-consumer.sh --topic <topic_name> --zookeeper 127.0.0.1:2181 --group <你的消费者组ID> --property print.key=true --property key.separator="-"
方法二:直接调用ConsoleConsumer类
跳过封装的脚本,直接运行底层的kafka.tools.ConsoleConsumer类,该类支持--offset参数:
/products/software/Apache/kafka/bin/kafka-run-class.sh kafka.tools.ConsoleConsumer --topic <topic_name> --zookeeper 127.0.0.1:2181 --partition <分区号> --offset <目标Offset值> --property print.key=true --property key.separator="-"
注意事项
- Offset是分区级别的,必须配合
--partition参数指定具体分区才能生效 - 如果使用全新的消费者组,方法二更便捷,无需修改ZooKeeper节点
内容的提问来源于stack exchange,提问作者Gabrielenones
相关产品推荐
相关产品推荐

