Apache Beam, KafkaIO至少一次语义



我们正在实现一个从Kafka读取数据并写入BigQuery的试验。

简单的管道:

  • KafkaIO.read
  • BigQueryIO.write

关闭自动提交。我们使用commitOffsetsInFinalize()

这个设置是否可以保证消息在BigQuery中至少出现一次并且不会丢失,前提是在BigQueryIO端一切正常?

commitOffsetsInFinalize()的文档中,我遇到了以下内容:

它有助于在从头开始重新启动管道时减少记录的间隔或重复处理

我很好奇"差距"是什么。这里指的是什么?

如果考虑边缘情况,是否存在消息被跳过而不传递给BQ的可能性?

提交Apache Kafka的偏移量意味着如果你要重新启动你的管道,它将在你重新启动之前的流中的位置开始。Dataflow确实保证在写BigQuery时数据不会被丢弃。但是,使用分布式系统,总是存在出错的可能性(例如,GCP中断)。

最新更新