【发布时间】:2018-03-06 06:33:55
【问题描述】:
我打算跳过主题的开头,只读取从某个时间戳到结尾的消息。关于如何实现这一点的任何提示?
【问题讨论】:
标签: python-3.x apache-kafka kafka-consumer-api kafka-python
我打算跳过主题的开头,只读取从某个时间戳到结尾的消息。关于如何实现这一点的任何提示?
【问题讨论】:
标签: python-3.x apache-kafka kafka-consumer-api kafka-python
我猜你使用的是kafka-python (https://github.com/dpkp/kafka-python),正如你提到的“KafkaConsumer”。
您可以使用offsets_for_times() 方法检索与时间戳匹配的偏移量。 https://kafka-python.readthedocs.io/en/master/apidoc/KafkaConsumer.html#kafka.KafkaConsumer.offsets_for_times
接着使用seek() 寻找该偏移量。 https://kafka-python.readthedocs.io/en/master/apidoc/KafkaConsumer.html#kafka.KafkaConsumer.seek
希望这会有所帮助!
【讨论】:
我解决了它,但是我不确定使用该方法获得的值。 我有一个 KafkaConsumer (ck),我使用 assignment() 方法获得了主题的分区。因此,我可以创建一个包含我感兴趣的主题和时间戳的字典(在本例中为 100)。
附带问题: 我应该使用 0 来获取所有消息吗?。
我可以使用该字典作为 offsets_for_times() 中的参数。但是,我得到的值都是None
zz = dict(zip(ck.assignment(), [100]*ck.assignment() ))
z = ck.offsets_for_times(zz)
z.values()
dict_values([None, None, None])
【讨论】: