本文主要是介绍hive 自定义函数UDF,UDAF,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
自定义函数
在hive中,有时候一些内置的函数,和普通的查询操作已经满足不了我们要查询的要求,这时候可以自己写一些自定义函数来处理。自定义函数(user defined function =UDF)
由于hive本身是用java语言开发,所以udf必须用java来写才可以。
Hive中有三种UDF
1. 普通udf(UDF)
操作单个数据行,且产生一个数据作为输出。例如(数学函数,字符串函数)
2. 聚合udf (UDAF)
接受多个数据行,并产生一个数据行作为输出。例如(COUNT,MAX函数等)
3. 表生成UDF(UDTF)
接受一个数据行,然后返回产生多个数据行(一个表作为输出)。比如lateral view(据说是一个将行转成列的函数)。
编写UDF
编写UDF必须满足一下:
1. 必须是org.apache.hadoop.hive.ql.exec.UDF的子类
2. 必须实现evaluate函数。
1. strip UDF
java code
package com.hcr.hadoop.hive;import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;public class Strip extends UDF {public Text evaluate(String str) {return str == null ? null : new Text(StringUtils.strip(str));}public Text evaluate(String str,String chrStr) {return str == null ? null : new Text(StringUtils.strip(str,chrStr));}
}
写完代码打成jar包hcr.jar
hive> add jar/root/hcr/tmp/hcr.jar;
Added /root/hcr/tmp/hcr.jar to class path
Added resource: /r
这篇关于hive 自定义函数UDF,UDAF的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!