例如以WATERMARK FOR order_time AS order_time - INTERVAL '4' SECOND
的方式定义一个水印,其中等待偏移量设置为4秒。
下面两种理解方式哪种是对的?
1.可以理解为:当Flink数据流中第一个2021-09-12 08:00:16
的数据达到的4秒后,所有2021-09-12 08:00:16
以前的数据都被认为已经到达了。
2.当前这一瞬,如果最大的事件时间为2021-09-12 08:00:20
,那么意味着2021-09-12 08:00:16
之前的数据都被认为已经到达了。其中2021-09-12 08:00:16
就可以认为是分界线,表示这个时间戳之前的数据可以被处理,而这个时间戳之后的数据还需要等待,直到水位线上涨到它所在的记录。
如果是第二种理解是对的,就会有另外一个疑问——如果数据中突然来了一条错误的时间戳,比如正常的数据都是2021-09-12
这一天的数据,但是由于一些奇怪的原因,突然来了一条2021-09-13 15:00:20
的数据,那基于第二种理解,此刻的水位线应该是2021-09-13 15:00:16
吗?