我有一些数据作为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());
这是正确的处理方式吗?或者我需要把每个timeWindowAll
和keyBy
放在自己的语句中,依此类推?
数据流API中还不支持多个聚合函数的链接。
在您的示例中,您创建了三个不同的5秒窗口,每个窗口应用一个聚合。这可能不是你想要做的。我会实现一个自定义的ReduceFunction
,它在一个窗口中同时执行所有聚合。有关示例,请参阅DataStream文档中的Window Reduce。