文章目录
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(),这个方法不是由接口定义的,因为它可接受的参数的个数,数据类型都是不确定的。Hive会检查UDF,看能否找到和函数调用相匹配的evaluate()方法
自定义函数案例
在java目录下新建包:hive_udf

本文是Hive系列教程的第四部分,详细介绍了如何创建和使用自定义函数,包括UDF(一对一输入输出)、UDTF(一对多输入输出)和UDAF(多进一出的聚合函数)。内容涵盖从IDEA创建项目,到导入Hadoop和Hive依赖,再到编写和测试不同类型的自定义函数。

2635

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



