微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Apache Beam、KafkaIO 至少一次语义

如何解决Apache Beam、KafkaIO 至少一次语义

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

简单的管道:

  • KafkaIO.read
  • BigQueryIO.write

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

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

commitOffsetsInFinalize() 的文档中,我遇到了以下情况:

它有助于在从头开始重新启动管道时最大程度地减少记录的间隙或重复处理

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

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

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。