如何宣告1分钟翻滚window?

How to declare 1 minute tumbling window?

我有带有自己时间戳的事件流。我需要将此流分成 1 分钟而不重叠 windows 并执行一些计算。我是 Flink 的新手,但发现这样的事情会奏效:

dataStream.keyBy(0).window(TumblingEventTimeWindows.of(Time.seconds(60)))

我不确定如何实现 window 从一分钟开始而不是在执行时开始。

也许还有比 Flink 更好的选择?

翻滚时间windows可以定义如下:

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 将时间 windows 对齐到 window 长度的倍数,从纪元时间 (1070-01-01 00:00:00) 开始。因此 1 分钟的时间 windows 将始终与一分钟的开始对齐。