自定义udf类实现hive函数功能

环境准备: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类

你可能感兴趣的:(大数据)