flink:在窗口流上应用多个聚合



我有一些数据作为id,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());

这是正确的处理方式吗?或者我需要把每个timeWindowAllkeyBy放在自己的语句中,依此类推?

数据流API中还不支持多个聚合函数的链接。

在您的示例中,您创建了三个不同的5秒窗口,每个窗口应用一个聚合。这可能不是你想要做的。我会实现一个自定义的ReduceFunction,它在一个窗口中同时执行所有聚合。有关示例,请参阅DataStream文档中的Window Reduce

相关内容

  • 没有找到相关文章

最新更新