带有键控窗口流的单个分区上的最新记录

问题描述 投票:0回答:1

Flink 流处理管道,具有 1 个 kafka 分区,具有 5 个并行度,具有带 1 分钟滚动窗口的键控事件窗口。我们使用带有默认周期性生成器的升序时间戳水印。

我们有很多来自不同键控窗口的最新记录。我不完全确定这是否与 flink 没有带键控水印有关。传入的事件按时间戳顺序排列,因此我认为这与推进水印有关。

这是否与全局水印有关,即使它们在生成水印之前和分配窗口之前在kafka源中被消耗,也将记录标记为晚?换句话说,当我们有事件等待窗口分配时,水印进度可以通过提前关闭窗口来将记录标记为迟到吗?

如果您需要更多详情,请询问我。

代码

WatermarkStrategy watermarkStrategy = WatermarkStrategy.forMonotonousTimestamps()
.withTimestampAssigner(timestamp);
Datastream datastream = executionEnvironment.fromSource(kafkaSource, watermarkStrategy);

datastream.keyBy(id).window(TublingEventTimeWindows.of(Time.milliseconds(60000))
.sideOutputLateData(lateRecordsTag)
.aggregate(aggregateFunction);
apache-flink flink-streaming
1个回答
0
投票

我的猜测是,数据在逐个键的基础上按时间戳顺序排列,但不是全局按顺序排列的。如果是这种情况,那么您需要以不同的方式进行水印,以便它反映数据流中实际的无序情况。

© www.soinside.com 2019 - 2024. All rights reserved.