如何使用apache flink中的摄取时间特性。我知道我们需要设置环境时间特性。但是我如何收集带有时间戳的数据,时间戳可以称为摄取时间。目前,当我使用它时,它正在处理基于系统时钟时间的窗口。我想根据数据进入flink环境的时间进行处理。
一点代码摘录可能有助于清楚地理解它:
环境时间特征:
env.setStreamTimeCharacteristic(TimeCharacteristic.IngestionTime);
窗口时间:
keyedEvents.timeWindow(Time.minutes(5))
源中的集合:
ctx.collect(monSourceData);
如果数据采集在11:03开始,我想在11:08结束,即5分钟。但它在11:05停止(以某种方式表现为处理时间)。
事先谢谢你的帮助。
1条答案
按热度按时间a8jjtwal1#
flink中的滚动窗口和滑动窗口始终与时钟对齐(由事件和水印定义的事件时间时钟或系统时钟);时间窗口未与第一个事件对齐。因此,如果窗口长度为5分钟,那么无论时间特性如何,都会有一个从11:00到11:05的窗口。
不过,翻滚窗口会采用可选的偏移参数,该参数可用于移动此对齐方式。所以你可以指定
TumblingEventTimeWindows.of(Time.minutes(5), Time.minutes(3))
,例如,将间隔移动3分钟。