文章目录
Hive系列文章
Hive系列 (八):Hive中的explode 与 lateral view
简介
用户自定义函数(UDF)是一个允许用户扩展HQL的强大的功能。
开发自定义UDF函数有两种方式,一个是继承org.apache.hadoop.hive.ql.exec.UDF
,另一个是继承org.apache.hadoop.hive.ql.udf.generic.GenericUDF
;
常见自定义函数
UDF:User-Defined-Function,用户自定义函数,一对一的输入输出。(最常用的)。
UDTF:User-Defined Table-Generating Functions,用户自定义表生成函数。一对多的输入输出,比如 lateral view explore()
UDAF:User-Defined Aggregation Function,用户自定义聚合函数,多进一出,比如 count/max/min。
创建自定义函数步骤
- 编写自定义函数
- 编译部署
- 在hive中注册自定义函数
- 使用自定义函数
- 销毁自定义函数
自定义函数的实现
udf格式
在idea中创建项目
在idea中新建maven项目,注意java版本要和hive环境保持一致。
点击下一步,输入项目名称
导入hadoop和hive jar包
hadoop包所在位置:
hive jar所在位置:
导入到项目中,这里我将hadoop和hive包放在本地两个文件夹中:
修改pom.xlm文件
上述包导入成功后,该问价做如下修改后,不会报错,则配置成功。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>hive_udf</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<!--添加自己hadoop和hive版本信息-->
<dependencies>
<!--hadoop版本信息-->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.3.1</version>
</dependency>
<!--hive版本信息-->
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>3.1.2</version>
</dependency>
</dependencies>
</project>
定义UDF函数要注意下面几点:
- 继承
org.apache.hadoop.hive.ql.exec.UDF
- 重写
evaluate
(),这个