Apache flink ApacheBeam中的CommitteOffsetSinFinalize()和复选标记
我正在开发一个使用KafkaIO作为输入的Beam应用程序Apache flink ApacheBeam中的CommitteOffsetSinFinalize()和复选标记,apache-flink,apache-beam,apache-beam-kafkaio,Apache Flink,Apache Beam,Apache Beam Kafkaio,我正在开发一个使用KafkaIO作为输入的Beam应用程序 KafkaIO.<Long, GenericRecord>read() .withBootstrapServers("bootstrapServers") .withTopic("topicName") .withConsumerConfigUpdates(confs) .withKeyDe
KafkaIO.<Long, GenericRecord>read()
.withBootstrapServers("bootstrapServers")
.withTopic("topicName")
.withConsumerConfigUpdates(confs)
.withKeyDeserializer(LongDeserializer.class)
.withValueDeserializer((Deserializer.class)
.commitOffsetsInFinalize()
.withoutMetadata();
KafkaIO.read()
.使用BootstrapServer(“BootstrapServer”)
.withTopic(“主题名称”)
.使用消费者配置更新(confs)
.withKeyDeserializer(LongDeserializer.class)
.withValueDeserializer((Deserializer.class)
.CommitteofSetsinFinalize()
.没有元数据();
我正在试图了解committeofsetsinfinalize()
的工作原理
如何完成流媒体作业?
管道中的最后一步是自定义DoFn,它将消息写入DynamoDb
。是否有方法手动调用那里的一些finalize()
方法,以便在每次成功执行DoFn
后提交偏移量
此外,我很难理解检查点与最终确定之间的关系?如果管道上没有启用检查点,我是否仍能够最终确定并使committeofsetsinfinalize()
正常工作
p、 这就是管道目前的运行方式,即使使用committeofsetsinfinalize()
读取的每条消息,也不管下游是否有故障正在提交,从而导致数据丢失
谢谢!这里的finalize指的是检查点的finalize,换句话说,当数据已持续提交到Beam的运行时状态时(这样将重试工作故障/重新分配,而无需再次从Kafka读取此消息)。这并不意味着所讨论的数据已经通过管道完成了剩余的工作。谢谢robertwb。如果从未定义检查点,会发生什么?如果应用程序在Flink上运行,默认的检查点机制是什么?我的理解是,除非我有
启用自动提交配置,否则为false
无论是否设置了commitofsetsinfinalize()
,消息仍将提交,是否正确?正确,这仅在未设置kafka使用者配置的情况下才有用。