hive UDAF开发

本文介绍了hive中自定义函数的三种类型:UDF、UDAF和UDTF,并重点讨论了UDAF的实现。UDAF用于多行数据的聚合操作,如max()和min()。在开发UDAF时,需要继承UDAFEvaluator和UDAF类,实现包括init(), iterate(), terminatePartial(), merge()和terminate()等关键方法。以平均值计算为例,展示了UDAF的实际应用。" 79226724,7461245,图形输出:规律与实践,"['算法', '编程实践', '问题解决', '数学', '计算机科学']
摘要由CSDN通过智能技术生成

@TOChive udaf

自定义函数

hive支持用户自定义函数,主要有三种。UDF、UDAF和UDTF。
UDF(User-Defined-Function)。输入一个或者多个参数,返回一个值。对一行或者一条数据操作。例如求长度length().
UDAF(User- Defined Aggregation Funcation)。聚合函数,多进一出,对于多条数据进行聚合操作。例如max(),min(),count()。多行转成一行。
UDTF(User-Defined Table-Generating Functions)。一进多出,可以对一行数据转成多行。
udf通常来说比较简单,但是用的也最多。这里只聚一个简单的例子.重点讨论UDAF的实现。

//写一个函数判断输入的字符串是否为空
import org.apache.hadoop.hive.ql.exec.UDF;
public class is_null extends UDF {
   
  public static int evaluate(String str){
   
    if (str == null || str.equals("") || str.replaceAll("\\s","").length()<=0){
   
        return 0;
    }else {
   
        return 1;
    }
}    

}

编写简单类型的UDF只需要注意两点即可
1).继承org.apache.hadoop.hive.ql.exec.UDF
2).实现evaluate方法。
然后把程序打包放到hive服务器上。

hive>add jar  /data1/is_null.jar;
hive>create temporary function is_null as 'com.shaohua.udf.is_null';
hive>select is_null(column) from table1;

UDAF

UDAF需要继承的类
1).org.apache.hadoop.hive.ql.exec.UDAFEvaluator;
2).org.apache.hadoop.hive.ql.exec.UDAF;
UDAF需要实现的方法
a).init()用于udaf的初始化。
b).iterate().接收输入的参数,进行内部轮转,返回boolean。
c).terminatePartial():无参数,其为iterate函数轮转结束后,返回轮转数据,类似于hadoop的Combiner
d).merge():接收terminatePartial的返回结果,进行数据merge操作,其返回类型为boolean
e).terminate():返回最终的聚集函数结果.

首先举一个常用的例子,求平均值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值