0

我们正在实施一个从 Kafka 读取并写入 BigQuery 的试点。

简单的管道:

  • KafkaIO.read
  • BigQueryIO.write

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

如果 BigQueryIO 端一切正常,此设置能否保证消息在 BigQuery 中至少出现一次并且不会丢失?

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

它有助于在从头开始重新启动管道时最小化记录的间隙或重复处理

我很好奇这里指的是什么“差距”?

如果您考虑边缘情况,是否有可能跳过消息而不将其传递给 BQ?

4

1 回答 1

0

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

于 2021-02-02T00:51:38.850 回答