Confluent HDFS 连接器:当没有 hdfs 文件时,如何从最新的偏移量读取?

Confluent HDFS connector: How can I read from the latest offset when there are no hdfs files?

我们有一个生产者应用程序 运行 几天了,正在为主题 A 生产数据。我们想启动 hdfs 连接器以从 topicA 读取而不是从偏移量 0 读取(因为这将导致巨大的滞后)。我们想从 latest 偏移量开始(一直有新数据进入 topicA)。

1) 由于连接器从 hdfs 中的主题名称中获取偏移量信息,因此我们如何从最新的偏移量中读取,因为 hdfs 中不存在任何文件?

2) 我能想到的一个选项是为每个分区手动创建具有最新偏移量的虚拟文件,但我们在这里讨论的是 topicA 中的 60 个分区,所以有没有更优雅的方法来做到这一点?

您可以设置此 属性 以使您的连接消费者组从主题中的最新可用偏移量开始

consumer.auto.offset.reset=latest

尽管如此,Connect 通常可以很快赶上大型集群和每个分区 1 个任务,所以从最早开始应该不会那么糟糕

NoName,最近添加了 HDFS 连接器在 HDFS 中没有文件名的情况下重置为最新提交的偏移量的功能。

您将在 4.0.1 或 4.1.0 及更高版本中找到它。

HDFS 连接器是一个接收器连接器,可以自行管理消费者偏移量。这样做是为了在将文件导出到 HDFS 时实现精确一次语义。在上述版本之前,如果连接器在 HDFS 中没有找到任何文件,它将从主题的最早偏移量开始使用,而不管任何消费者设置。

您可能会在此处找到相关更改,这些更改现在允许连接器在 HDFS 中没有文件的情况下查询已提交的偏移量:

https://github.com/confluentinc/kafka-connect-hdfs/pull/299https://github.com/confluentinc/kafka-connect-hdfs/pull/305