为什么我的 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()
见
我希望 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()
见