hive UDAF详解

User Defined Aggregation Funcation 用户自定义聚类方法 需要继承org.apache.hadoop.hive.ql.exec.UDAF类 内部类Evaluator实现org.apache.hadoop.hive.ql.exec.UDAFEvaluator接口,主要实现init、iterate、terminatePartial、merge、terminate这几
摘要由CSDN通过智能技术生成

User Defined Aggregation Funcation
用户自定义聚类方法,和group by联合使用
接受多个输入数据行,并产生一个输出数据行
(顺带一句,UDTF (user-defined table-generating function)
用户定义表生成函数,操作作用于单个数据行,且产生多个数据行)

两种实现

hive有两种UDAF:简单和通用
简单,利用抽象类UDAF和UDAFEvaluator,使用Java反射导致性能损失,且有些特性不能使用,如可变长度参数列表
通用,利用接口GenericUDAFResolver2(或者抽象类AbstractGenericUDAFResolver)和抽象类GenericUDAFEvaluator,可以使用​​所有功能,但比较复杂,不直观

简单方式实现

UDAF的运行流程

PARTIAL1:原始数据到部分聚合,调用iterate和terminatePartial –> map阶段
PARTIAL2: 部分聚合到部分聚合,调用merge和terminatePartial –> combine阶段
FINAL: 部分聚合到完全聚合,调用merge和terminate –> reduce阶段
COMPLETE: 从原始数据直接到完全聚合 –> map阶段,并且没有reduce

实现

需要继承org.apache.hadoop.hive.ql.exec.UDAF类
内部类Evaluator实现org.apache.h

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值