因为表格样式被吃掉了,所以看不清,用图片说明下。 https://i.bmp.ovh/imgs/2020/12/78d7dee70d88ebc9.png
定义了3秒的滚动窗口 第一条消息的eventTime是9:00:01,是在系统实际时间9:00:01收到的。 第二条消息的eventTime是9:00:02,但是是在系统实际时间9:00:11分收到的。 想要达成的目标是在系统时间9:00:05时把这一窗口关闭掉进行运算,忽略迟到的第二条消息,更不必要等到第3条消息触发到下一个窗口的时间了再关闭这个窗口。 找了下用ProcessingTimeoutTrigger可以达到目的,不过不知道有没有更详细的文档说明trigger怎么用的。 [email protected] 发件人: 赵一旦 发送时间: 2020-12-20 23:30 收件人: user-zh 主题: Re: 如何通过现实时间控制事件时间的窗口 描述比较乱,看不懂。 [email protected] <[email protected]> 于2020年12月17日周四 下午2:16写道: > Hi, > 我们现在以eventTime作为时间标准,每3秒做一次TumbleWindow,数据假设如下 > 系统时间 > 与上一条间隔 > 事件时间 > 与上一条间隔 > 9:00:01 > > 9:00:01 > > 9:00:11 > 10s > 9:00:02 > 1s > 9:00:12 > 1s > 9:00:12 > 10s > 从事件时间上看,第一条和第二条数据是归集到同一窗口的。 > 不过现在的处理需要在窗口有第一条数据后系统时间超时4s以上就强制关闭该窗口,即在系统时间9:00:05时关闭窗口,忽略掉第二条数据。 > 请问这种情况需要怎么生成watermark? > 使用过 > WatermarkStrategy.forBoundedOutOfOrderness(Duration.ofSeconds(4L)) > 或者 > > WatermarkStrategy.forMonotonousTimestamps().withIdleness(Duration.ofSeconds(4L)) > 结果都把第一条和第二条数据归集到同一个窗口中了, > 都没有达到预想的结果。 > 要如何设置才能在窗口中仅有一条数据而忽略第二条数据? > > > [email protected] >
