问题定义:半小时监控可以定义为整间隔时间(如9:00-9:30),也可以定义为某条数据之后的半小时
提示: 若采用processingtime,我们可以在env中设置自动定时产生watermark(动动你勤劳的小手google下);若采用eventtime,我们则需要自定义timestamp和watermark(这个网上一大堆)。
1.处理这类问题,提供以下两种方案:
1.1 采用window(窗口的划分依赖于自然时间,用来处理整间隔时间)
window的触发需要依赖于数据,而watermark则是窗口是否执行计算的依赖。但是我们只有一种数据来源,若数据丢失,会造成没有窗口,这样我们写的窗口内数据不存在触发报警的逻辑就不可能执行,在这种情况下,我们需要一个定时的数据源帮助定时触发窗口(这个很简单,我其他文章里写了一个很傻的)。
另外补充一句,如果有特殊需要,比如说在监控中间来了某种数据需要提前终止窗口计算,可以在窗口后重写trigger
1.2 采用keyedstream(这个可以用来实现某条数据后半小时没有数据报警,不想打字了,直接上代码吧,我写的很基础)
以上内容为本人原创文章,转载请注明出处