【发布时间】:2018-07-02 13:04:05
【问题描述】:
我正在使用 Google Dataflow 中的 Beam KafkaIO 源运行作业,但找不到一种简单的方法来在作业重新启动时保持偏移量(作业更新选项不够,我需要重新启动作业)
将 Beam 的 KafkaIO 与 PubSubIO 进行比较(或者更准确地说,将 PubsubCheckpoint 与 KafkaCheckpointMark 进行比较)我可以看到检查点持久性在 KafkaIO 中没有实现(KafkaCheckpointMark.finalizeCheckpoint 方法为空),而它在 PubsubCheckpoint.finalizeCheckpoint 中实现,它确实对 PubSub 进行了确认。
这是否意味着我无法在作业重新启动时以最小的努力可靠地管理 Kafka 偏移量?
到目前为止我考虑过的选项:
实现我自己的持久偏移逻辑 - 听起来很复杂,我在 Scala 中通过 Scio 使用 Beam。
什么都不做,但那会导致作业重新启动时出现许多重复(主题有 30 天的保留期)。
启用自动提交,但这会导致消息丢失,更糟糕的是。
【问题讨论】:
-
你最好的办法是试试看。 SO 不是寻求设计帮助的好地方。
标签: scala apache-kafka google-cloud-dataflow apache-beam