我读到,“..排序运算符必须缓冲它接收到的所有元素。然后,当它接收到水印时,它可以对时间戳低于水印的所有元素进行排序,并按排序顺序发出它们。这是正确,因为水印表明不能有更多元素到达并与已排序元素混合......” -https://cwiki.apache.org/confluence/display/FLINK/Time+and+Order+in+Streams https://cwiki.apache.org/confluence/display/FLINK/Time+and+Order+in+Streams
因此,水印似乎充当后续操作员开始处理的信号。我想,这也是触发器的作用。两者有什么区别?
您可以将水印视为特殊记录,告诉操作员现在是什么(事件)时间。当操作员接收到水印时,它将水印与其当前时间以及从不同流分区接收到的其他水印进行比较。根据比较结果,操作员推进自己的时钟。
一些操作符注册计时器(窗口、基于时间的连接、自定义实现)。当操作员的时钟经过计时器注册的时间时,操作员触发计时器。
因此,水印和计时器是两个不同的东西。水印告诉操作员现在是什么时间,操作员会在正确的时间点触发计时器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)