我有一些数据以id,float,float,float形式出现。我想按顺序将min(),max()和sum()字段按 id 值分组。
使用 flatMap 我有一个 Tuple4 ,但是我不知道如何将它发送到下一步。
我有什么:
dataStream.flatMap(new mapper()).keyBy(0)
.timeWindowAll(Time.of(5, TimeUnit.SECONDS)).min(1)
.timeWindowAll(Time.of(5, TimeUnit.SECONDS)).sum(2)
.timeWindowAll(Time.of(5, TimeUnit.SECONDS)).sum(3)
.map(new printstuff());
这是处理此问题的正确方法吗?或者我是否需要将每个timeWindowAll
放在带有keyBy
的声明中?等等?
答案 0 :(得分:5)
DataStream API尚不支持链接多个聚合函数。
在您的示例中,您将创建三个不同的5秒窗口,每个窗口应用一个聚合。这可能不是你想要做的。我将实现一个自定义ReduceFunction
,它在一个窗口中一次执行所有聚合。有关示例,请参阅DataStream documentation中的 Window Reduce 。