为什么我的 flink window 设置了 watermark 很高就触发了?

Why does my flink window trigger when I have set watermark to be a high number?

我希望 windows 只有在我们等到水印的最大延迟定义的最大可能时间后才会触发。

.assignTimestampsAndWatermarks( WatermarkStrategy.forBoundedOutOfOrderness(Duration.ofMillis(10000000)) .withTimestampAssigner((order, timestamp) -> order.getQuoteDatetime().getTime())) .keyBy(order-> GroupingsKey.builder().symbol(order.getSymbol()).expiration(order.getExpiration()) .build()) .window(EventTimeSessionWindows.withGap(Time.milliseconds(100000000)))

在这个例子中,为什么 window 会在任何有意义的时间内触发? window 是一个非常大的 window,我们等待记录的时间很长。当我 运行 我的例子时, window 仍然会在一分钟内被触发。这是为什么?

原来水印是在源耗尽后生成的(在本例中是从读取文件)。因此发出了最大水印(9223372036854775807)。 在以下情况下会触发:window.maxTimestamp() <= ctx.getCurrentWatermark()