如何在apache-flink中实现groupByUntil?

时间:2015-11-24 22:03:45

标签: apache-flink

某些反应框架具有groupByUntil功能。允许按键对元素进行分组,并在特定事件或时间间隔后删除它(即来自RxJS的here描述)。

我可以看到apache-flink没有开箱即用的功能。谁能解释一下如何在apache-flink中实现这样的功能?

1 个答案:

答案 0 :(得分:1)

你看过Flink的时间窗吗? Windows用于对流的元素进行分组,例如按时间和密钥。

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

val s: DataStream[(Int, Long)] = ...

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

这会将流分区为第一个Int元素(_._ 1),并且每隔五分钟创建一个窗口,用于为每个键分组元素。在每个窗口上,应用minBy函数来选择具有最小Long值的元素。

您还可以使用Triggers和Evictors定义滑动窗口,计算窗口或实现自己的窗口逻辑。窗口评估函数(示例中为minBy)也可以是自定义实现。

您应该查看DataStream documentation了解详情。