Flink中的自定义Windows充电



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

这样,在第一个小时里,数据被收集起来,我对它进行操作。一旦完成,每五分钟进行一次相同的操作。

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

更新:我认为即使是triggers也没有帮助,据我所知,它们只是定义了每个window的触发时间/计数,而不是第一个window何时触发。

实现这一点并非易事。

给定KeyedStream,您必须使用GlobalWindow和自定义有状态的Trigger,后者"记住"是否是第一次激发的。

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

有关GlobalWindowTrigger的详细信息,请参阅Flink Window文档。

相关内容

  • 没有找到相关文章

最新更新