前言:之前在实习过程中,有一个业务需求,因为开始没有理解需求,所以走了很多弯路,最后修改代码逻辑的时候发现还有上游字段没有解析,需要些一个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)

本文介绍了Hive中的UDF、UDTF和UDAF的概念,重点讲解了UDF的evaluate方法和UDTF的GenericUDTF类,包括如何编写实例,并演示了udtf的使用方法和注意事项。
最低0.47元/天 解锁文章
1015

被折叠的 条评论
为什么被折叠?



