【发布时间】:2017-05-16 14:48:00
【问题描述】:
我有以下情况
stream<Tuple2<String, Integer>
.keyBy(0)
.timeWindow(Time.of(10, TimeUnit.SECONDS))
.sum(1)
.flatMap(..)
.sink()
我要做的是计算我的时间窗口的前 N 个。 每个窗口的前 N 个由 sink 存储。
我可以计算flatmap中的top N,但是不知道什么时候发送到sink进行存储。据我所知,无法从 flatmap 函数中知道窗口何时结束。
我知道有其他替代方法,例如 apply 函数可以同时执行这两种操作,或者在流中创建标记以指示结束,但我想知道是否有更优雅的解决方案。
【问题讨论】:
-
澄清一下,您希望每 10 秒为所有键计算前 N 条记录,对吗?
标签: ranking apache-flink flink-streaming top-n windowing