0

我正在尝试在 apache Beam 上使用 KafkaIO 从多个 kafka 经纪人那里读取数据。偏移管理的默认选项是 kafka 分区本身(不再使用 kafka >0.9 的 zookeper)。使用此设置,当我重新启动作业/管道时,存在重复和丢失记录的问题。

根据我的阅读,处理此问题的最佳方法是管理外部数据存储的偏移量。是否可以使用当前版本的 apache beam 和 KafkaIO 来做到这一点?我现在使用的是 2.2.0 版本。

而且,从 kafka 阅读后,我会将其写入 BigQuery。KafkaIO 中是否有设置,只有在将消息插入 BigQuery 后才能设置提交的消息?我现在只能找到自动提交设置。

4

1 回答 1

0

在 Dataflow 中,您可以更新作业而不是从头开始。新作业从最后一个检查点状态恢复,确保只处理一次。这也适用于 KafkaIO 源。Kafka 消费者配置中的自动提交选项有帮助,但它与 Dataflow 内部状态不是原子的,这意味着重新启动的作业可能有一小部分重复或丢失的消息。

于 2018-01-10T18:47:28.380 回答