如何在apache-flink中实现groupByUntil



一些反应式框架具有groupByUntil功能。允许按键对元素进行分组,并在特定事件或时间间隔后将其删除(即此处的RxJS描述)。

正如我所看到的,apache-flink并没有开箱即用的功能。有人能解释一下如何在apacheflink中实现这样的功能吗?

你看了Flink的时间窗口吗?窗口用于对流的元素进行分组,例如按时间和键。

您可以如下定义翻滚时间窗口:

val s: DataStream[(Int, Long)] = ...
val r: DataStream[(Int,Long)] = s
  .keyBy(_._1)
  .timeWindow(Time.minutes(5))
  .minBy(2)

这将把流划分为第一个Int元素(__1),并每五分钟为每个键创建一个窗口来对元素进行分组。在每个窗口上,应用minBy函数来选择具有最小Long值的元素。

您还可以定义滑动窗口、计数窗口,或者使用触发器和驱逐器实现您自己的窗口逻辑。窗口评估函数(示例中为minBy)也可以是自定义实现。

您应该查看DataStream文档以了解更多详细信息。

相关内容

  • 没有找到相关文章

最新更新