环境准备:hadoop、mysql、eclipse、maven
1.UDF类别:
UDF通常分为三类:一对一、多对一、多对多
UDF(User-Defined-Function):通常是一对一的函数,一个参数一个结果
UDAF(User-Defined Aggregation Funcation):是多对一的函数,类似于聚合函数(也叫分组函数,count、max等)
UDTF(User-Defined Table-Generating Functions):是一对多的类型,用于切分操作
2.Helloworld
创建maven工程,并导入依赖
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>1.1.0</version>
</dependency>
版本号根据你的hive版本而定
简单的helloworld
import javolution.text.Text;
public class ToUpperCaseTest extends UDF {
public Text evalualt(Text str){
if(str==null){
return null;
}
if(str.trim().length()==0){
return str;
}
return str.toUpperCase();
}
}
将maven导出成jar包,在hive中可以零时设置
add jar jar包路劲/jar包
create template function 方法名 as “全类名”;
也可以永久设置,不过比较麻烦,需要在FunctionRegistry.java中引入自定义udf类