我有以下情况
stream<Tuple2<String, Integer>
.keyBy(0)
.timeWindow(Time.of(10, TimeUnit.SECONDS))
.sum(1)
.flatMap(..)
.sink()
我要做的是为我的时间窗口计算一个top n。每个窗口的顶部n由Flume存储。
我可以计算平面图中的前n个,但我不知道什么时候把它送到Flume里储存。据我所知,无法从flatmap函数中知道窗口何时结束。
我知道有一些替代方法,比如apply函数同时执行这两个操作,或者在流中创建标记来指示结束,但是我想知道是否有一个更优雅的解决方案。
1条答案
按热度按时间zfycwa2u1#
如果你想计算
N
对于所有关键点上的每个窗口,您应该应用一个长度相同的时间窗口,在其应用方法中计算顶部N
. 你可以这样做: