我有一些数据输入为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 - flink : applying multiple aggregations on a windowed stream,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33486191/