一些反应式框架具有groupByUntil功能。允许按键对元素进行分组,并在特定事件或时间间隔(即,来自RxJS的here描述)之后将其移除。
正如我所看到的,apache-flink没有这样的开箱即用功能。谁能解释一下如何在apache-flink中实现这样的功能?
发布于 2015-11-25 06:15:38
你看过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 documentation以了解更多详细信息。
https://stackoverflow.com/questions/33904731
复制相似问题