我正在使用Google Dataflow中的Beam KafkaIO源运行作业,找不到在作业重新启动期间持久保存偏移的简单方法(作业更新选项不够,我需要重新启动作业)
将Beam的KafkaIO与PubSubIO进行比较(或者更精确地说是比较PubsubCheckpoint与KafkaCheckpointMark),我可以看到,在KafkaIO中并未实现检查点持久性(KafkaCheckpointMark.finalizeCheckpoint方法为空),而在PubsubCheckpoint.finalizeCheckpoint中实现了它,它对PubSub进行了确认。
这是否意味着我无法以最小的努力可靠地管理作业重启时的Kafka偏移量?
我到目前为止考虑的选项:
实现我自己的持久偏移逻辑-听起来很复杂,我在Scala中使用Beam尽管Scio。
不执行任何操作,但这将导致作业重新启动时出现许多重复(主题的保留期为30天)。
启用自动提交,但这会导致丢失消息,甚至更糟。