大数据-hadoop-Hive 自定义函数

在hive中,自定义的函数可以根据功能的划分为3中:

第一种是:1进一出,我们称之为UDF函数,类似的功能有大写转小写;在name字段前加上一个前缀等功能,这种函数的功能是将传入的1个字段进行转换成另外一个字段

第二种是:1进多出,我们称之为UDTF函数,类似的函数功能是explode函数,输入一行数据,可以出来多组的数据

第三种是:多进一出,我们称之为UDAF函数,类似的函数有sum,avg等聚合函数,输入多行数据,只出来一个结果

下面我们来看一下,如何自定义这些函数

1、UDF函数

1、导包,继承org.aparche.hadoop.hive.ql.UDF
    pom.xml文件如下 添加hive的依赖关系
    <dependencies>
        <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-exec</artifactId>
            <version>1.2.1</version>
        </dependency>
    </dependencies>
2、创建evaluate函数,并且实现该函数,注意:大多数的博客说的是重写该函数,指的是重新写一个这个函数,而不是重写UDF类里面的evaluate函数,本人看过源码,UDF类中根本就没有evaluate函数。。。。
3、hive的命令打包提交UDF函数
    3.1 使用idea打包jar包,并且将该jar包上传至集群,使用命令
        add jar "/opt/UDFDemo.jar"
    3.2 创建function
        create [temporary] function [daname] function_name AS UDFDemo(类的全类名)
    3.3 删除UDF函数
    Drop function [if exists ] [dbname.] function_name
 
{注意事项}
UDF函数必须要有返回值,不能为void ,可以为null
UDF函数的源码如下
package HIVE.UDF;
import org.apache.hadoop.hive.ql.exec.UDF;

public class UDFDemo extends UDF {
    public int evaluate(int data){
        return  data+5;
    }
}

实例操作:
1、添加jar包(永久添加)
2、根据该类的全类名去创建函数
3、使用该函数


2个需要注意的地方:
1、在第一步添加jar包的时候,使用的是本机的路径,并且是不需要将双引号
2、在第二步创建函数名称的时候,as后面跟随的全类名的路径是需要使用双引号括起来。

2、UDTF函数

 

3、UDAF函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值