直接来一个案例
现在有一份学生表如下
我们需要在每一个学生姓名前面加上字符串”小杨同学“,使用自定义函数
2,继承UDF类org.apache.hive hive-exec 3.1.2
public class HelloUdf extends UDF {
public String evaluate (String name) {
if (name == null) return null;
return "小杨同学:" + name;
}
}
3,重写evaluate方法
public class HelloUdf extends UDF {
public String evaluate (String name) {
if (name == null) return null;
return "小杨同学:" + name;
}
}
注意evaluate不能拼错或者自定义名称,血泪教训哈
打包上传至hive节点上的指定路径下
如
/root/awz/soft/hive/cusjar/cushive-1.0-SNAPSHOT.jar
这个可以自定义但是要知道并记住
4,将jar包添加至hive的classpathadd jar /root/awz/soft/hive/cusjar/cushive-1.0-SNAPSHOT.jar;5,创建临时函数与开发好的Java class关联
create temporary function name as "cn.awz.HelloUdf";
注意:这里是零时函数,当你关闭当前的hive窗口后,函数就消失。
也可以创建永久函数
create function name as "cn.awz.HelloUdf";6,在hql中使用自定义函数
select name(name) from student;
上面我们只是自定义啦一个UDF函数,他的特点是一进一出
当然啦我们还有UDAF函数,多进一出,
UDTF函数,一进多出



