我有带有自己的时间戳的事件流。我需要将此流划分为 1 分钟不重叠的窗口并执行一些计算。我对 Flink 很陌生,但弄清楚这样会起作用:
dataStream.keyBy(0).window(TumblingEventTimeWindows.of(Time.seconds(60)))
我不确定如何实现该窗口从分钟开始而不是在执行的那一刻开始。
也许有一些更好的选择,然后 Flink?
翻转时间窗口可以定义如下:
val execEnv = StreamExecutionEnvironment.getExecutionEnvironment
execEnv.setStreamTimeCharacteristic(TimeCharacteristic.EventTime)
val stream: DataStream[(String, Int)] = ???
val result = stream
.keyBy(0)
// define tumbling window of 1 min length
.timeWindow(Time.minutes(1))
// apply sum aggregation on window
.sum(1)
Flink 将时间窗口对齐到从纪元时间 (1070-01-01 00:00:00
开始的窗口长度的倍数上。因此,1 分钟的时间窗口将始终与一分钟的开始对齐。