这篇文章主要介绍了蜂巢常见自定义函数有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
<强> 1.1为什么需要自定义函数强>
蜂巢的内置函数满足不了所有的业务需求.hive提供很多的模块可以自定义功能,比如:自定义函数,serde,输入输出格式等。
<强> 1.2常见自定义函数有哪些强>
00001只;<强> UDF 强>:用户自定义函数,用户定义函数。一对一的输入输出。(最常用的)。
00002只;<强> UDTF 强>:用户自定义表生成函数.user table-generate函数定义。一对多的输入输出.lateral视图爆炸
00003只;<强> UDAF 强>:用户自定义聚合函数.user聚合函数定义。多对一的输入输出计数和马克斯。
<强> 2自定义函数实现强>
<强> 2.1 UDF格式强>
先在工程下新建一个pom。xml,加入以下maven的依赖包 请查看code/pom.xml
定义UDF函数要注意下面几点:
00001. 继承org.apache.hadoop.hive.ql.exec.UDF
00002. 重写evaluate(),这个方法不是由接口定义的,因为它可接受的参数的个数,数据类型都是不确定的。Hive会检查UDF,看能否找到和函数调用相匹配的evaluate()方法
2.1.1 自定义函数第一个案例
public class FirstUDF extends UDF {
public String evaluate(String str){
String upper = null;
//1、检查输入参数 if (StringUtils.isEmpty(str)){
} else {
upper = str.toUpperCase();
}
return upper;
}
//调试自定义函数 public static void main(String[] args){
System.out.println(new firstUDF().evaluate("jiajingwen"));
}}
2.2 函数加载方式
2.2.1 命令加载
这种加载只对本session有效
# 1、将编写的udf的jar包上传到服务器上,并且将jar包添加到hive的class path中
# 进入到hive客户端,执行下面命令
add jar/hivedata/udf.jar
# 2,创建一个临时函数名,要跟上面蜂巢在同一个会话里面:
创建临时函数假发& # 39;com.qf.hive.FirstUDF& # 39;;
3,检查函数是否创建成功
显示功能;
4。测试功能
选择假发(& # 39;六边形abcdef # 39;);
5。删除函数
删除临时函数如果存在tolow;
<强> 2.2.2启动参数加载强>
(也是在本会话有效,临时函数)
1,将编写的udf的jar包上传到服务器上
2,创建配置文件
vi。/hive-init
添加jar/hivedata/udf.jar;
创建临时函数假发& # 39;com.qf.hive.FirstUDF& # 39;;
# 3,启动蜂巢的时候带上初始化文件:
,蜂巢我。/hive-init
,选择假发(& # 39;六边形abcdef # 39;)
<强> 2.2.3配置文件加载强>
通过配置文件方式这种只要用蜂巢命令行启动都会加载函数
1,将编写的udf的jar包上传到服务器上
2,在蜂巢的安装目录的本目录下创建一个配置文件,文件名:。hiverc
/bin/vi。null