自定义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类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值