我是靠谱客的博主 火星上发带,最近开发中收集的这篇文章主要介绍Hive学习—UDF函数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、简述

UDF(User-Defined Functions)即是用户定义的hive函数。hive自带的函数并不能完全满足业务需求,这时就需要我们自定义函数了

二、实现UDF注意事项

1.自定义udf函数需要继承org.apache.hadoop.hive.ql.exec.UDF
2.需要实现evaluate 函数,evaluate 函数支持重载。
3.udf 必须要有返回类型,可以返回null,但是返回类型不能为void;
4.udf 常用Text/LongWrite 等类型,不推荐使用java类型。

三、Java编写UDF代码

1.导包 hadoop-common、hive-exec

 <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.6.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.hive/hive-exec -->
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>1.1.0</version>
</dependency>

2.实现返回年和季度的UDF

import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
//类继承UDF
public class MyQuarter extends UDF{
//实现evaluate方法
//返回值,参数类型是hadoop类型,参数是字段值
public static Text evaluate(Text text){
try{
//通过SimpleDateFormat将文本类型转为日期类型
SimpleDateFormate sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(text.toString);
//通过Calender类获取年份和月份
Calender cal = Calender.getInstance();
cal.setTime(date);
int month = cal.get(Calender.Month);
String m =cal.get(Calender.year)+"year,";
//判断月份的季度
swith(month){
case 1:case 2:case 3:
m+="first quarter";
break;
case 4: case 5: case 6:
m+="second quarter";
break;
case 7: case 8: case 9:
m+="third quarter";
break;
case 10: case 11: case 12:
m+="fourth quarter";
break;
default:
m+="month is error";
}
}catch(ParseException e){
e.printStackTrace();
}
}
}

四、hive中创建UDF函数

临时UDF函数(关闭hive后消失)

1.将Java代码打包传到Linux
2.上传到hdfs
3.use 具体数据库
4.add jar hdfs://192.168.56.100:9000/path
5.create temporary function 函数名 as “包名+类名”

长久UDF函数(关闭hive后依然存在)
前3步相同,第四步为 create function 函数名 as “包名+类名” using jar hdfs://192.168.56.100:9000/path

如果不想要该函数了,可以通过如下命令删除
Drop function function_name

天再高又怎么样,踮起脚尖就更接近阳光

最后

以上就是火星上发带为你收集整理的Hive学习—UDF函数的全部内容,希望文章能够帮你解决Hive学习—UDF函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部