1.编写自定义类
public class FirstUDF extends UDF {
//重写evaluate方法
public String evaluate(String str){
String result=null;
if(!StringUtils.isEmpty(str)){
result=str.toUpperCase();
}
return result;
}
}
在pom.xml,加⼊以下maven的依赖包
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>2.1.1</version>
</dependency>
2.使用maven打包
打包好的文件在当前工程下的target目录下
3.将打包好文件上传到linux中的某个目录(/root)
修改.jar的名字为udf.jar
这种方式只能是当前使用,退出以后就不能使用了
第一种方式
进⼊到hive客户端,执⾏下⾯命令
hive> add jar /root/udf.jar
-- 创建⼀个临时函数名,要跟上⾯hive在同⼀个session⾥⾯:
hive> create temporary function toUP as '包名加类名';
-- 检查函数是否创建成功
hive> show functions;
-- 测试功能
hive> select toUp('abcdef');
-- 删除函数
hive> drop temporary function if exists toUP;
第二种方式
[root@hadoop01 bin]# vi ./hive-init
# 加入下面脚本
add jar /home/qf-2102-1.0.jar;
create temporary function myConcat as 'com.al.hive.FirstFun';
启动hive的时候带上初始化文件:
[root@hadoop01 bin]# hive -i ./hive-init
第三种方式
直接hive就可以
cd /usr/local/hive/bin
vi .hiverc
添加配置文件
add jar /root/udf.jar;
create temporary function toUP as '包名加类名';
第四种方式
#将编写的udf的jar包上传到hdfs上
[root@hadoop01 ~]# hdfs dfs -mkdir /auxjars
[root@hadoop01 ~]# hdfs dfs -put /home/udf.jar /auxjars
create function test.myConcat as 'com.al.hive.FirstFun' using jar 'hdfs://hadoop01:9000/auxjars/udf.jar';
第五种方式
直接将jar包放在/usr/local/hive/lib中
直接使用就可以