创建hive-udf

1.自定义 UDF 函数

pom 中添加下面依赖

1
2
3
4
5
6
7
8
9
<dependencies>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>2.3.4</version>
<!-- 不需要打入jar包 -->
<scope>provided</scope>
</dependency>
</dependencies>

由于 hive 环境中已经有了 hive-exec jar包 所以打包时,不需要将hive-exec 打入

新建一个类 继承 UDF 即可

1
2
3
4
5
6
7
8
// 继承UDF类
public class MyUDF extends UDF {
// 实现evaluate方法
public int evaluate(String str) {
// 自定义逻辑
return 0;
}
}

在这个类中,方法名一定要为 evaluate

2.打包上传

在 maven 中打包
找到刚才的 jar 包
上传到 hive 所在服务器

将jar包移动到 hive目录下的auxlib目录

然后重启hiveserver2

3.注册函数

将jar包注册到hive中后,就可以注册刚才自己编写的udf函数了

一般需要先注册临时函数,因为UDF开发完成后,需要进过一些测试才能确认代码是否没有问题。在测试UDF代码时,务必使用临时函数进行测试。这样即使代码出现了问题,也不会把函数真正的注册到Hive。代码测试完毕并且确认无误后,再将函数注册为永久函数

HIVE 函数相关

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 创建临时函数
CREATE TEMPORARY FUNCTION <函数名> AS <class全路径>;
# 删除临时函数
DROP TEMPORARY FUNCTION [IF EXISTS] <函数名>;


# 创建永久函数
CREATE FUNCTION [db_name.]function_name AS class_name
[USING JAR|FILE|ARCHIVE 'file_uri' [, JAR|FILE|ARCHIVE 'file_uri'] ];
# 删除永久函数
DROP FUNCTION [IF EXISTS] function_name;


# 查看函数
show functions;


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!