如何解决为什么我的水印设置为高数时我的flink窗口会触发?
我希望窗口只有在我们等到水印的最大延迟定义的最大可能时间后才会触发。
.assignTimestampsAndWatermarks( WatermarkStrategy.forBoundedOutOfOrderness(Duration.ofMillis(10000000)) .withTimestampAssigner((order,timestamp) -> order.getQuoteDatetime().getTime())) .keyBy(order-> GroupingsKey.builder().symbol(order.getSymbol()).expiration(order.getExpiration()) 。建造()) .window(EventTimeSessionWindows.withGap(Time.milliseconds(100000000)))
在这个例子中,为什么窗口会在任何有意义的时间内触发?窗口是一个非常大的窗口,我们等待记录的时间很长。当我运行我的例子时,窗口仍然在一分钟内被触发。这是为什么?
解决方法
原来是在源耗尽后生成水印(在这种情况下是通过读取文件)。所以发出了最大水印(9223372036854775807)。
触发器在以下情况下发生:window.maxTimestamp() <= ctx.getCurrentWatermark()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。