Flink中Window Function(窗口函数)的三种类型对比及应用

本文详细介绍了Flink中的三种窗口函数:增量聚合函数、全量窗口函数和它们的组合使用方式。增量聚合函数具备高性能和低存储成本的优点,适用于简单的聚合操作。全量窗口函数虽然消耗资源较多,但提供了更多的灵活性,适合复杂的窗口处理需求。结合使用这两种函数可以同时获得高性能和灵活性。

Flink中窗口函数的使用主要包含增量聚合函数全量窗口函数增量聚合+全量窗口组合函数三种类型,本文将从该三种类型函数的特点、应用场景、对比和示例方面进行讲解。

增量聚合函数

特点:计算性能好,占用存储空间少,因为基于中间状态的计算结果,窗口中只维护中间结果状态,不需要缓冲原始数据。一句话总结:不耗空间、性能好,但不够灵活

【说明】“灵活”指可以获取上下文信息、元数据等信息。下同。

应用场景:基于中间状态进行计算的的场景,如求和、求最大值、求最小值等。

  1. ReduceFunction

对输入的两个相同类型的数据元素按照指定的计算方法进行聚合计算,然后输出类型相同的一个结果值,即进行聚合计算的前后数据类型一致。

  1. AggregateFunction

AggregateFunction接口需要实现以下四个方法,实现复杂度也相对较高,但AggregateFunction接口相对ReduceFunction接口更加灵活,也较为常用。示例如下:

// 自定义增量聚合函数AggregateFunction
public static class ItemCountAgg implements AggregateFunction<UserBehavior, Long, Long> {
   
   
    @Override
    public Long createAccumulator() {
   
   
        return 0L;
    }
    @Override
    public Long add(UserBehavior value, Long accumulator) {
   
   
        return accumulator + 1;
    }
    @Override
    public Long getResult(Long accumulator) {
   
   
        return accumulator;
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值