在风暴1.0.2中,kafka-spout在每次重启拓扑时都会重复使用相同的数据

时间:2016-11-17 23:04:58

标签: apache-kafka apache-storm

我目前正在开发风暴版本项目0.9.6-> 1.0.2 即使在SpoutConfig构造函数中使用相同的spout id,我的spout也没有从最新的偏移开始读取。 哦,我没有删除zookeeper数据,只是删除了storm-data。

我改变了我的项目配置和来源,如下所示 1. storm-core和storm-kafka版本在pom.xml中将0.9.6改为1.0.2,将kafka_2.10改为0.8.2.2。 2.更改包路径 - backtype - > org.apache - storm.kafka - > org.apache.storm.kafka 3.在自定义方案(我使用AVRO类)中将序列化代码byte []更改为ByteBuffer

我开始拓扑,我的spout消费者开始读取特定的偏移值。 我的拓扑读取这样的数据,即使重新启动拓扑,每次重启都会消耗相同的数据。

数据1 - >数据2 - >数据3 (重启拓扑) 数据1 - >数据2 - >数据3

在更改版本之前,即使重新启动拓扑,也要像这样正确使用下一个数据。 数据1 - >数据2 - >数据3 (重启拓扑) 数据4 - >数据5 - >数据6 (重启拓扑) 数据7 - >数据8 - >数据9

我没有在SpoutConfig中更改zkRoot值。(我认为这意味着kafka组ID) 我该如何解决这个问题?

谢谢和问候

1 个答案:

答案 0 :(得分:0)

检查spoutConfig.startOffsetTime 它可以是kafka.api.OffsetRequest.LatestTime()或kafka.api.OffsetRequest.EarliestTime()