Flink 用窗口函数聚合可以使用 select() 算子。select() 算子可以对窗口中的数据进行聚合操作,并返回聚合结果。select() 算子的第一个参数是聚合函数,第二个参数是聚合的字段。
例如,下面的代码使用 sum() 函数对窗口中的数据进行求和操作,并将结果返回到 result 流中:
DataStream readings = ...;
// 创建一个滚动窗口,窗口大小为 5 秒,滑动间隔为 1 秒
WindowedStream windowedReadings = readings
.window(TumblingEventTimeWindows.of(Time.seconds(5)))
.assignTimestampsAndWatermarks(new AscendingTimestampExtractor() {
@Override
public long extractTimestamp(SensorReading reading) {
return reading.getTimestamp();
}
});
// 使用 select()
算子对窗口中的数据进行求和操作
DataStream result = windowedReadings
.select(new AggregateFunction() {
@Override
public Double createAccumulator() {
return 0.0;
}
@Override
public Double add(SensorReading reading, Double accumulator) {
return accumulator + reading.getTemperature();
}
@Override
public Double getResult(Double accumulator) {
return accumulator;
}
@Override
public Double merge(Double a, Double b) {
return a + b;
}
});
更多关于窗口函数的用法的详细信息,请参阅 Flink 文档。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。