hive自定义函数

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

一.hive自定义函数介绍

当hive提供的内置函数无法满足业务需求时,可以考虑使用用户自定义函数(User-Defined Function,UDF)
hive中常见的UDF有如下3种

  • 1)UDF
  • 一条记录使用函数后输出还是一条记录,如:upper/substr
  • 2)UDAS(User-Defined Aggregation Function)
  • 多条记录使用函数后输出还是一条记录,如:count/max等
  • 3)UDTF(User-Defined Table-Generating Functions)
  • 一条记录使用函数后输出多条记录,如:lateral view explore()

二.hive自定义函数开发

1.需求:开发自定义函数,使得在指定字段前加上"Hello: "字样

2.hive中UDF函数开发步骤

  • 1)继承UDF类
  • 2)重写evaluate方法,该方法支持重载,对每条记录执行一次evaluate方法
    注意: 1.UDF必须要有返回值,可以是null,但是不能为void 2.推荐使用Text/LongWritable等hadoop类型

3.功能实现

1)新建maven工程,在pom.xml中添加UDF函数开发的依赖包,如下:

<!--cdh版本建议添加一个-->
  <repositories>
    <repository>
      <id>cloudera</id>
      <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
    </repository>
  </repositories>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
	<!--hadoop依赖-->
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-common</artifactId>
      <version>2.6.0</version>
    </dependency>
    <!--hive依赖-->
    <dependency>
      <groupId>org.apache.hive</groupId>
      <artifactId>hive-exec</artifactId>
      <version>1.1.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hive</groupId>
      <artifactId>hive-jdbc</artifactId>
      <version>1.1.0</version>
    </dependency>
  </dependencies>

2)自定义UDF函数实现

package sunyong.hive;

import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;

/**
 * @author sunyong
 * @date 2020/07/12
 * @description
 * 功能:输入xxx 输出:Hello: xxx
 */
public class HelloUDF extends UDF {
    public Text evaluate(Text name){
        return new Text("Hello : "+name);
    }

    public static void main(String[] args) {
        HelloUDF udf = new HelloUDF();
        System.out.println(udf.evaluate(new Text("张三")));
    }
}

3)编译jar包上传到linux本地hive的lib目录下
4)将自定义UDF函数添加到hive中去,即在hive命令行模式中执行如下命令:add jar /opt/install/hive/lib/UDF.jar;

#语法
add jar jar包绝对路径名;

5)创建函数(若在function前面有temporary,表示临时函数退出会话将会删除该函数):create function sayHello as 'sunyong.hive.HelloUDF';

#语法
create [temporary] function sayHello as '全类名(包名.类名)';

6)使用函数:select sayHello(emp_name) from employee;,效果如下:
在这里插入图片描述

4.碰到的坑:可正常添加jar包却无法创建函数

hive> create temporary function sayHello as "sunyong.hive.HelloUDF";
FAILED: Class HelloUDF not found
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask
hive> create function sayHello as 'sunyong.hive.HelloUDF';
Failed to register acid_demo.sayhello using class sunyong.hive.HelloUDF
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask

解决方法:

#下载zip包
yum install zip
#以下命令会删除先前jar的签名文件(-d后面参数是自己jar包的名字)
zip -d UDF.jar 'META-INF/.SF' 'META-INF/.RSA' 'META-INF/*SF'
Hive 自定义函数 导读 大家好,我是数据开发者,非常感谢大家最近的关注,你们的关注是我持续输出的动力,让我们共同提高。 大数据平台下的数据仓库搭建过程中存在许多个性化的业务需求,或者说是系统需求,无法在 Hive 提供的内置函数中找到解决办法,为了解决这个问题,我们可以使用 Hive 自定义函数满足这种个性化需求。我们本篇就使用 Hive 中的自定义函数实现几种数仓搭建过程中的需求。 Hive 有哪些自定义函数Hive 中存在三种类型的函数,分别是 UDF, UDAF, UDTF,这三种类型的 UDF 分别是: UD 阅读详情

相关推荐

干货详解:hive自定义函数

hive自定义函数 1 自定义函数 1.1 为什么需要自定义函数 hive的内置函数满足不了所有的业务需求。 hive提供很多的模块可以自定义功能,比如:自定义函数、serde、输入输出格式等。 1.2 常见自定义函数有哪些 2 自定义函数实现 2.1 UDF格式 先在工程下新建一个pom.xml,加入以下maven的依赖包 请查看code/pom.xml 定义UDF函数要注意下...

qfluohao的博客 886

hive自定义函数学习

1介绍 Hive自定义函数包括三种UDF、UDAF、UDTF UDF(User-Defined-Function) 一进一出 UDAF(User- Defined Aggregation Funcation) 聚集函数,多进一出。Count/max/min UDTF(User-Defined Table-Generating Functions) 一进多出,如lateral view e...

weixin_30405421的博客 850

Hive查询之自定义函数

Hive查询之自定义函数 1 自定义函数流程 1)Hive 自带了一些函数,比如:max/min等,但是数量有限,自己可以通过自定义UDF来方便 的扩展。 2)当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数UDF:user-defined function)。 3)根据用户自定义函数类别分为以下三种: (1)UDF(User-Defined-Function) ​ 一进一出 (2)UDAF(User-Defined Aggregation Funct

weixin_49063354的博客 1144

大数据---29.Hive 自定义函数

Hive 自定义函数(临时函数和永久函数)

u014579001的博客 4547

hive的3种自定义函数

hive自定义函数 1 自定义函数 1.1 为什么需要自定义函数 hive的内置函数满足不了所有的业务需求。 hive提供很多的模块可以自定义功能,比如:自定义函数、serde、输入输出格式等。 1.2 常见自定义函数有哪些 UDF:用户自定义函数,user defined function。一对一的输入输出。(最常用的)。 UDTF:用户自定义表生成函数。user defined table...

Aidon博客 1万+

Hive自定义函数

十、Hive自定义函数 1.自定义函数步骤 2.自定义UDF函数 3.自定义UDTF函数

扛麻袋的少年的博客 5665

【详解】Hive自定义函数

Apache Hive 是一个基于 Hadoop 的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的 SQL 查询功能,可以将 SQL 语句转换为 MapReduce 任务进行运行。其优点是学习成本低,可以通过类 SQL 语法快速分析海量数据。然而,在实际的数据处理过程中,我们可能会遇到一些 Hive 内置函数无法满足需求的情况。这时,就需要使用自定义函数UDF,User Defined Function)来扩展 Hive 的功能。本文将介绍如何在 Hive创建和使用自定义函数

牛肉胡辣汤 1620

Hive 自定义UDF函数

在使用hive中,有时要根据业务需求自定义一些函数,下面是自定义函数的步骤 1.新建一个maven项目,在项目的pom文件中引入依赖 <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-exec</a...

muyingmiao的专栏 664

HIVE中的自定义函数

HIVE中的自定义函数

朝着梦想 渐行前进 7069

hive自定义UDF函数

hive自定义UDF函数 1.什么是udfUDF(User-Defined Functions)即是用户自定义hive函数hive自带的函数并不能完全满足业务的需求,这时就需要我们自定义函数了。 官网参考地址:LanguageManual UDF 2.UDF分类 1.UDF:one to one ,进来一个出去一个,row mapping。 是row级别操作,如:upper、subs...

思亘七险,点落九宫,神游八极,纵横十方。 3078

Hive函数 Hive自定义函数

Hive自定义函数 系统内置函数 1.查看系统自带的函数 hive> show functions; 2.显示自带的函数的用法 hive> desc function upper; 3.详细显示自带的函数的用法 hive> desc function extended upper; 自定义函数 1)Hive 自带了一些函数,比如:max/min等,但是数量有限,自己可以通过自定...

lljazxx的博客 302

Hive自定义UDF函数

UDF全称:User-Defined Functions,即用户自定义函数,在Hive SQL编译成MapReduce任务时,执行java方法,类似于像MapReduce执行过程中加入一个插件,方便扩展。1.编写UDF函数UDF需要继承org.apache.hadoop.hive.ql.exec.UDF,UDTF继承org.apache.hadoop.hive.ql.udf.generic.GenericUDTF,UDAF使用比较少,这里先不讲解;

weixin_43597208的博客 1089

Hive】(五)Hive函数—— 自定义函数

Hive函数函数分类:   标准函数:一行数据中的一列或多列为输入,结果为单一值   聚合函数:多行的零列到多列为输入,结果为单一值   表生成函数:零个或多个输入,结果为多列或多行 自定义函数 UDF:自定义标准函数 1:1 输入一行,输出一行 UDAF:自定义聚合函数 n:1 输入多行,输出一行 UDTF:自定义表生成函数 1 : n 输入一行,输出多行 一、UDF 1...

weixin_42804692的博客 551

Hive创建自定义函数

一、概述 如果hive的内置函数不够用,用户也可以自己定义函数来使用,这样的函数称为hive的用户自定义函数,简称UDF UDF使得Hive的可扩展性增强 二、实现步骤: 新建java工程,导入hive相关包,导入hive相关的lib 创建类继承UDF 自己编写一个evaluate方法,返回值和参数任意。 import org.apache.hadoop.hive.ql.exec.UDF...

Arno的博客 2094

HIVE-用户自定义函数

HIVE-用户自定义函数 前言 更多往期文章请查看 大数据学习目录 当 Hive 提供的内置函数无法满足实际的业务处理需要时,可以考虑使用用户自定义 函数进行扩展。用户自定义函数分为以下三类: UDF(User Defined Function)。用户自定义函数,一进一出 UDAF(User Defined Aggregation Function)。用户自定义聚集函数,多进一出;类似于:count/max/min UDTF(User Defined Table-Generating Functions)

没有眉毛的阿斗叶 913
上一篇: hive高级查询(二)
下一篇: hive函数大全
sun_0128
博客等级 码龄6年 153粉丝 119原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值