# HIVE udf和udtf功能使用

本文介绍了Hive中的UDF、UDTF和UDAF的概念,重点讲解了UDF的evaluate方法和UDTF的GenericUDTF类,包括如何编写实例,并演示了udtf的使用方法和注意事项。
	前言:之前在实习过程中,有一个业务需求,因为开始没有理解需求,所以走了很多弯路,最后修改代码逻辑的时候发现还有上游字段没有解析,需要些一个udtf来完成需求。之前虽然了解过udf和udtf等,但是没有实际写过,
最后差点任务延期,所以在使用hive过程中,udf和udtf也应该作为数据开发人员的基本功,在实际开发过程中也是经常需要使用的。

1、UDF:只对单行数值产生作用;继承UDF类,核心方法evaluate();

注意:evaluate()方法并不是唯一的:
这里我以一个实际方法为例来讲解:
public class DateBetween extends UDF {
   
   
	public boolean evaluate(String diffDates[],String inDate,int num) throws ParseException {
   
   
		if(diffDates == null) return false;
		for(String date:diffDates){
   
   
			int diff = diffDays(date,inDate);
			if(diff>0 && diff<=num) return true;
		}
		return false;
	}
	public boolean evaluate(String diffDate,String inDate,int num) throws ParseException {
   
   
		if(diffDate == null ||"".equals(diffDate))return false;
		String diffDates[] = diffDate.split(",");
		for(String date:diffDates){
   
   
			int diff = diffDays(date,inDate);
			if(diff>0 && diff<=num) return true;
		}
		return false;
	}
	public int diffDays(String dateStr1,String dateStr2) throws ParseException {
   
   
		if(dateStr1 == null || dateStr2 ==  null)return -1;
		SimpleDateFormat df = null;
		df = new SimpleDateFormat("yyyyMMdd");
		Date date1= df.parse(dateStr1);
		Date date2 = df.parse(dateStr2)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值