编程语言
首页 > 编程语言> > java – flink:在窗口流上应用多个聚合

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

作者:互联网

我有一些数据以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等等?

解决方法:

DataStream API尚不支持链接多个聚合函数.

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

标签:java,apache-flink
来源: https://codeday.me/bug/20190519/1136384.html