在使用hive的时候,hive本身自带的函数不足以满足于我们需求的情况下,我们可以自定义满足我们需求的函数。
一、hive自定义函数步骤:
1、继承org.apache.hadoop.hive.ql.exec.UDF;
2、写固定的evaluate()方法。这个方法名字是固定的。
注意:evaluate方法支持重载。
二、实例演示
1、代码
package com.hive.test;
import org.apache.hadoop.hive.ql.exec.UDF;
public class HiveUdf extends UDF{
public String evaluate(int num){
if(num>1000){
return "very good";
}else if(num>500){
return "good";
}else {
return "bad";
}
}
}
2、将此代码打成jar包并上传linux
3、准备测试数据
[root@cmaster test]# vim num.txt
4、创建表并且导入数据
hive> create table mytest(id int) row format delimited fields terminated by ' ';
hive> load data local inpath '/test/num.txt' into table mytest;
5、将jar加载到hive中
hive> add jar /test/hiveUdf_jar/hive_test.jar
> ;
6、创建一个临时函数指向上边编译的类
hive> create temporary function myF as 'com.hive.test.HiveUdf';
7、可以调用这个函数了
hive> select myF(id) from mytest;
OK
very good
good
good
bad
Time taken: 1.742 seconds, Fetched: 4 row(s)
8、调用完函数可以删除
hive> drop temporary function myF;
注意:查询hive所有函数使用 show functions
hive> show functions;