flinksql 回撤流中,主键发生变更的影响
1 什么是回撤流
这篇文章主要谈论一个场景,简单来说:
首先我们来简单的说一下什么是回撤流,以及回撤流的底层原理,举个例子:
这个说的不是很清晰 ,其实倒数第二个图当作输出 比较好看出来,再bank 这一条来之后,数据结果是
hello 1
world 1
bank 1
这个时候 又来了一条hello,刚刚已经下发的hello 1 这个结果就不对了,就需要降这条结果撤回,也就是撤回一条 hello 1 下发一条 hello 2。简单的说 这就是回撤流。
我们用最常见的 ,用的最多的kafka来举例回撤流 大家可能就明白了
- 来了一条hello数据 下发一条
[+I] hello 1 - 又来了一条hello,上一条撤回
[-U] hello 1 - 下发一条
[+U] hello 2
其实所谓的回撤,是下发了两条数据,告诉下游 上一条我废弃了,后面这条才是现在有效的,下游所有支持回撤流的存储引擎