当hive自带函数很难满足或者无法满足hql时,可以自定义函数(UDF)
1、先写java类,继承UDF,并重载evaluate方法
package com.timo.bigdata.udf
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
public final class Lower extends UDF{
public Text evaluate(final Text s){
if(s==null){return null;}
return new Text(s.toString().toLowerCase());
}
}
2、打包成jar上传到服务器
3、将jar包添加到hive的classpath
hive>add JAR /home/hadoop/udf.jar
4、创建临时函数与开发好的java类关联
Hive>create temporary function toprovince as 'com.timo.bigdata.udf.ToProvince';
5、即可在hql中使用自定义的函数strip
Select strip(name),age from test;
注意这里是临时函数,每次使用都需要创建,如果要永久使用,需要更改注册函数的类,并将自定义的函数注册进去,重新编译源码。