Hi,我的理解是这样的:这个问题是由于 source 的重放,导致 Flink 内部就重复计算,并且会传到下游,最终反映在结果上,或者说这种操作不能保证内部 Extractly-Once?比如在 [8:00,8:05) 这 5 分钟之内,在 8:03 某个 task 挂了,然后又重新拉起。这时候从 checkpoint 的恢复获得的是这 8:00 分钟之前的 Kafka offset,但是 [8:00,8:03) 之内的消息已经消费,流向下游。重新拉起之后,由于某种原因 source 重放,那么这时候 [8:00,8:03) 的数据会再次被消费,并且会发往下游。
在 2019-09-09 16:01:48,"[email protected]" <[email protected]> 写道: sink 的精确一次需要外部系统的支持的, 比如 kafka 的事务性producer, 社区有一篇文章讲的很好, 可以看一下 https://ververica.cn/developers/exactly-once/ [email protected] 发件人: Jimmy Wong 发送时间: 2019-09-09 11:50 收件人: [email protected] 主题: Kafka 与 extractly-once Hi,all: 请教一下,我设置 checkpoint 的时间是 5 分钟,如果在这 5 分钟之内,某个 task 挂了,然后又重新拉起。我是不是可以理解为这时候从 checkpoint 的数据获得的是这 5 分钟之前的 Kafka offset,但是这 5 分钟之内的消息已经消费,流向下游。重新拉起之后,source 重放,那么这时候这 5 分钟的数据会再次被消费麽?如果再次消费,那么怎么保证 Extractly-Once 呢? | | Jimmy | | [email protected] | 签名由网易邮箱大师定制
