我想从一个特定的时间开始,使用kafka-console-consumer
并向其传递一个与该时间相对应的--offset
,以介绍一个Kafka主题。为了找出要指定的偏移量,我尝试使用以下命令:
kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list ... --topic data.live --time 1533827402000
但我得到的只是:
data.live:8:
data.live:2:
data.live:5:
data.live:4:
...
(即无偏移)。如果我将--time
指定为-2(“最早的”)或-1(“最新的”),则该命令可以正常工作,并返回如下结果:
data.live:8:765349205
data.live:2:766537956
data.live:5:759575128
data.live:4:761703674
...
(我假设第二个冒号后面的数字是偏移量)。
我的问题是:如何在中间时间内获得补偿?我尝试使用毫秒时间戳记,我认为该时间戳记应包含一些数据。
还有第二个问题:使用--time
的偏移量为-1和-2,我估计是一个中间偏移量,然后将其传递给
kafka-console-consumer.sh --bootstrap-server ... --topic data.live --offset 77000000 --partition 1
但是--offset
似乎对我返回的内容没有任何影响(我的主题值包含表明这一点的人类可读时间戳)。
答案 0 :(得分:0)
当我在Mac上运行date
时,这就是我得到的
$ date -r 1533827402000
Fri Jan 20 17:13:20 CST 50575
我认为它不打印偏移量,因为它们还不存在
尝试--time 1533827402
(对于同一命令,在2018
中有一年的时间)
您还可以进行kafka-console-consumer ... --property print.timestamp=true
,然后将grep
移出您感兴趣的前几位,然后将这些值用作GetOffsetShell
答案 1 :(得分:0)
也许您使用的是较旧的日志格式版本?
我们看到了同样的事情,但我们有 log.message.format.version=0.9.0.1
我认为这就是为什么直到 0.10 才引入日志消息时间戳