1.用户自定函数:
应用场景:当有一些需求,hive内置函数满足不了sql查询的时候,用户可以通过java封装一个函数。
分类:
udf:输入一条数据,返回一条,1对1.
UDAF:输入多条数据,输出1条。多对1.
UDTF:输入一条数据,输出多条数据。1对多。
UDF用的是最多的。
UDF函数可以直接应用于select语句,对查询结构做格式化处理后,在输出内容
2.编写UDF函数 的时候需要注意一下几点:
(1)在pom文件中导入相关依赖:
<dependency>
<groupId>org
.apache
.hive
</groupId
>
<artifactId>hive
-exec
</artifactId
>
<version>1.2.1</version
>
</dependency
>
(2)自定义UDF需要继承org.apache.hadoop.hive.ql.exec.UDF.
(3)需要evaluate函数
package hadoopdemo
;
import org
.apache
.hadoop
.hive
.ql
.exec
.UDF
;
public class HiveUdf_demo extends UDF {
public String
evaluate(String clo
) {
String lowerCase
= clo
.toLowerCase();
return lowerCase
;
}
}
(4)把程序打包放到目标机器上去
(5)进入hive客户端,添加jar包:add jar /usr/local/testdata/hive_UP.jar;
(6)创建临时函数:hive>create temporary function f_up as 'hive_demo.hive_udf';
查询HQL语句:
select f_up(line) from wc_test;
销毁临时函数:hive>drop temporary function f_up;
注:UDF只能实现一进一出的操作,如果需要实现多进一出,则需要实现UDAF。