问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

FlinkSQL聚合函数(Aggregate Function)详解

发布网友 发布时间:2024-09-04 22:40

我来回答

1个回答

热心网友 时间:2024-11-19 11:31

使用场景:聚合函数,也就是 UDAF,通常用于将多条数据输入并输出一条数据的场景。

图中展示了一个聚合函数的示例以及聚合函数包含的重要方法。

案例场景:

关于饮料的表格,有三个字段:id、name、price。表格中有5行数据,要找到所有饮料中最贵的饮料的价格,即执行一个max()聚合函数得到结果,遍历所有5行数据,最终结果只有一个数值。

开发流程:

实现AggregateFunction接口,其中所有的方法必须是public的、非static的。

必须实现以下方法:

某些场景下必须实现:

关于输入、输出参数数据类型的方法:

默认情况下,用户的Input输入参数(accumulate(Acc accumulator, Input输入参数)的输入参数Input输入参数)、accumulator(Acc聚合中间结果createAccumulator()的返回结果)、Output输出参数数据类型(Output输出参数getValue(Acc accumulator)的Output输出参数)会被Flink使用反射获取到。

对于accumulator和Output输出参数类型,Flink SQL的类型推导在遇到复杂类型时会推导出错误的结果(注意:Input输入参数因为是上游算子传入的,类型信息是确定的,不会出现推导错误),比如非基本类型POJO的复杂类型。

与ScalarFunction和TableFunction类似,AggregateFunction提供了AggregateFunction#getResultType()和AggregateFunction#getAccumulatorType()指定最终返回值类型和accumulator的类型,两个函数的返回值类型是TypeInformation。

案例:加权平均值

实现思路:

为了计算加权平均值,accumulator需要存储加权总和以及数据的条数,定义了类WeightedAvgAccumulator作为accumulator,Flink的checkpoint机制会自动保存accumulator,在失败时进行恢复,保证精确一次的语义。

WeightedAvg(聚合函数)的accumulate方法有三个输入参数,第一个是WeightedAvgAccum accumulator,另外两个是用户自定义的输入:输入的值ivalue和输入的权重iweight。尽管retract()、merge()、resetAccumulator()方法在大多数聚合类型中都不是必须实现的,但在示例中提供了它们的实现,并且定义了getResultType()和getAccumulatorType()。

代码案例:

测试结果:
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
联想Z470AM I5处理器与I3 联想ideapad z470 独显默认设置是什么 联想Z470 I5处理器 GT520M的显卡跟普通的GT520M显卡有什么区别 性能怎 ... 我新买了一台联想z470 i3-2310 但是朋友说显卡不太好!! 我玩天龙八部... 联想的z470笔记本 上面 的独显GT520M 能不能 更换 或者是升级阿? ...我的是双显卡的 z470- i5 显卡是 gt520m 能换吗 vivo手机耳机麦克风说话声音小 耳机通话声音小是怎么回事 为什么我手机耳机的麦克风声音很小怎么调 求:7个字的情侣游戏名,纯汉字,有诗意的(不要古诗)。不带任何符号或英文... 我老婆站立或行走时左下腹疼痛,并伴有抽搐感,躺下就不疼,怎么回事啊 我是女生,最近站起来左下腹就痛坐下来就好多了是怎么回事呢,有什么不用... SQL汇总查询 请问一下武汉文都的考研冲刺密训营怎么样? 请问往年考研的同学,启航考研班最后的密训班真的能押到题目吗? 考研密训课有必要吗 求四代火影的壁纸,好看的!! 有哪些雪纺半身长裙的搭配技巧值得分享? 方舟spino是什么恐龙介绍_方舟spino是什么恐龙是什么 高手所说的LR放风筝,到底是什么技术 我鸟D,能单打黑上吗,是打通! 结合党的现阶段奋斗目标,谈谈如何立足本职,更好地服务我市三张图总 ... 欺诈之地斗士成就达成心得分享介绍_欺诈之地斗士成就达成心得分享是什么... 南吕·黄钟尾诗词鉴赏 我用qq邮箱注册票务账号,说我的邮箱已注册,怎么办 为什么说梦见压死猫不祥? 为什么qq邮箱总显示邮箱已注册? 我和兄弟各有一本,户口簿上同房分户,我和兄弟各可以申请户主吗? 交通事故伤者能不起诉驾驶员吗 交通事故伤者可以不起诉驾驶员吗 女人左边下腹疼痛是什么原因 女性左侧下腹疼痛是什么原因 今天左下腹阵痛,站着坐着都很疼,只有躺着才舒服,以前有患过慢性胃肠炎... Excel不小心点到关闭,鬼使神差的又不小心点到不保存,请问这样有什么方法... 反硝化滤池滤砖 《周易》的作者? 秘密要读轻声吗 钢筋弯曲机安全的操作规程? 法律规定自诉案件上诉吗 自诉案件上诉人可以上诉吗? 自诉刑事案件一审败诉能上诉吗 谁有刑事案件的上诉权上诉的程序有什么 小型货车轮胎气压是多少 货车轮胎一般几个气压 人口田被征用得不到补偿怎么办 ...被征用,国家不补贴土地,我们下辈子怎么活?谁能告诉我该怎么办? 土地征收中的违法行为有哪些 地方政府非法批地的形式违法征地的情形是什么 未批先占、少批多占、拆分审批,这些土地违法行为,可以举报吗?_百度... 手表牌子排行榜