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