Hive系列 (四):自定义函数UDF UDTF UDAF

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hive系列文章

Hadoop完全分布式搭建(腾讯云服务器+阿里云服务器)

Hive系列 (一):Hive搭建

Hive系列 (二):Hive基础知识

Hive系列 (三):开窗函数详解

Hive系列 (四):自定义函数UDF UDTF UDAF

Hive系列 (五):Hive数据类型

Hive系列 (六):Hive数据类型转换

Hive系列 (七):Hive常用函数

Hive系列 (八):Hive中的explode 与 lateral view

Hive系列 (九):Hive数据存储

Hive系列 (十):Hive调优

简介

用户自定义函数(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函数要注意下面几点:

  1. 继承org.apache.hadoop.hive.ql.exec.UDF
  2. 重写evaluate(),这个
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值