Kafka版本:0.10.2.1
每天由上游定时发送一批数据到Kafka,并被下游消费者消费入到数据库中。最近遇到了一个情况,Kafka中显示收到消息(总偏移量增加)1000条,但是下游数据库中仅有950条。现在需要排查kafka中的数据是否存在不合法数据导致无法被正确消费,这就要求抽取这1000条数据(上游只存了原始数据,可能存在中途拼接问题,所以无法从上游截取数据)。
问题在于,这个topic有10个分区,但是这1000条数据可能不一定是平均发送到这10个分区内的。现有的模拟消费的命令必须要指定分区、起始消费位置和消费数量,这种方式没有办法精确的抽到这最后发过来的1000条。
所以想请问各位大佬是否有方法或者命令可以解决这个问题?
可以根据时间来重新消费这些数据。
参考:https://www.orchome.com/1004
感谢回复。我看了下0.10.1版本的javadoc 这个里面的seek方法里有这么一句
Note that you may lose data if this API is arbitrarily used in the middle of consumption, to reset the fetch offsets
如何理解这个"arbitrarily"?如果使用您的代码传递的消费者组和正在使用的消费者组是同样的话 offset可能会被重置吗?换句话说,是否意味着我可以借由这个方法修改当前消费者组的偏移量?还是说 这个描述的仅针对正在被消费中的数据?
我在这个 https://www.orchome.com/35 页面下曾提过类似的问题,0.9.x的版本的javadoc里关于seek也是这么描述的。那实际上当初那个问题或许可以通过这个方式解决?
1、同一个消费者组的话,修改了offset,那么共同生效(会受影响)。
2、根据时间维度的,0.9版本不行,是1.0之后才有。
3、
seek
可以。你的答案