Hive UDF的学习与使用

本篇仅展示UDF完整的操作流程,不包含UDF的具体开发内容

UDF简述

Hive中本身自带很多函数供开发人员使用,但现实情况中,有些特殊情景需要特定的操作,而Hive函数本身是支持扩展的,所以UDF就是自定义函数,在HIve中使用的一种方式

流程步骤

  • 继承UDF类或GenericUDF类
  • 重写evaluate()方法并实现函数逻辑
  • 编译打包为jar文件
  • 复制到正确的HDFS路径
  • 使用jar创建临时/永久函数
  • 调用函数

一.新建maven项目

  • 第一步:新建项目选择maven
    在这里插入图片描述

  • 第二步:设置包名以及项目名
    在这里插入图片描述

  • 第三步:设置maven安装的所在位置
    在这里插入图片描述

  • 第四步:完成
    在这里插入图片描述

二.配置pom.xml文件

  • 增加hadoop-common、hive-exec
    在这里插入图片描述

三.创建类

  • 创建类继承UDF后实现方法
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
import org.json.Test;

/**
 * @ Author: Zhangyu
 * @ Date: 2020/10/6
 * @ Description:实现转大写功能
 */
//继承UDF类
public class TestUDF extends UDF {
    //实现方法evaluate(并非继承的方法,仅仅是简易将UDF实现的方法同一命名)
    public Text evaluate(Text str){
        if (str==null){
            return null;
        }
        return new Text(str.toString().toUpperCase());
    }
}

  • 完成后,将项目打成JAR包上传至Linux(如果对打JAR包有疑问的可以点击这里

四.在Hive上使用UDF

使用创建函数可能会出现一些奇怪报错
建议创建前先执行下面操作:
yum install -y zip
zip -d [jar包名].jar ‘META-INF/.SF’ ‘META-INF/*SF’

  • 创建临时函数(在Hive下):临时函数可以直接跨库使用
    第一步:add jar [/路径/包名.jar];
    第二步:create temporary function [函数名] as '[实现类完整的包路径]';
//示例
//add jar
add jar /root/testUDF.jar;
//create
create temporary function upword as 'cn.kgc.kb09.utf.ADDHour';
//测试
select upword("hello");
//结果
HELLO
  • 创建永久函数(在Hive下):永久函数不可直接跨库使用,需要在函数名前加上创建时所在库的库名
    第一步(在HDFS上新建jar包存放路径):hdfs dfs -mkdir -p /apps/hive/functions
    第二步(将jar包上传至HDFS):hdfs dfs -put [/路径/包名.jar] /apps/hive/functions/
    第三步(创建永久函数):create function [函数名] as ['实现类完整的包路径'] using jar ['hdfs://IP地址:9000/JAR包在HDFS上的路径'];

永久函数删除的方法:drop function [函数名];

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值