0

我正在使用 Flink 的TimeWindow功能来执行一些计算。我正在创建一个 5 分钟Window。但是我只想第一次创建一个小时Window。我需要的下一个窗口是 5 分钟。

这样在第一个小时内,收集数据并对其执行我的操作。完成此操作后,每五分钟执行一次相同的操作。

我发现这可以用 a 来实现,trigger但我不确定trigger应该使用哪个以及如何使用。

更新:我认为甚至triggers没有帮助,据我所知,他们只是定义触发的时间/计数window,而不是触发第一个window的时间。

4

1 回答 1

3

这并非易事。

给定 aKeyedStream你必须使用 aGlobalWindow和一个自定义的 stateful Trigger,它“记住” is 是否第一次被触发。

val stream: DataStream[(String, Int)] = ???
val result = stream
  .keyBy(0)
  .window(GlobalWindows.create())
  .trigger(new YourTrigger())
  .apply(new YourWindowFunction())

Flink Window 文档GlobalWindow中有关和的详细信息。Trigger

于 2016-04-20T21:35:00.507 回答