Hive中UDF函数的编写以及使用

Hadoop相关知识TOC

Hive中UDF函数的使用

Hive中如何自定义UDF函数,帮助提升效率。

使用JAR包的方式

例如需要实现求数组的最大值,Hive中将数组定义为了字符串,我们需要求该数组的最大值
示例如下,hive中某一列存为[12,34,56,3]的字符串,需要求其中的最大值,此时用UDF函数做最为方便
(1)相关依赖

    <dependencies>
        <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-exec</artifactId>
            <version>3.1.3</version>
        </dependency>
    </dependencies>

(2)实现代码

这里先继承UDF类,然后实现evaluate方法

package hadooputils;

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

public  class getMaxData extends UDF{

    public double evaluate(String array){
        array = array.replace("[","").replace("]","");
        String[] nums = array.split(",");
        double[] num_arr = new double[nums.length];
        double result=0;
        for(int i=0;i<nums.length;i++){
            if(nums[i].length()>0){
            num_arr[i] = Double.parseDouble(nums[i]);
            if(num_arr[i]>result){
                result = num_arr[i];
            }
        }}
        return result;
    }

}

(3)做成jar包后,上传至hdfs任一文件夹,我上传到了hdfs:/user/hadoop/hiveUDF文件夹下

sudo -u hdfs hadoop dfs -put /tmp/getMaxData.jar hdfs:/user/hadoop/hiveUDF

(4)激活该函数
在hive客户端中输入以下命令

create function warning.getMaxData as 'hadooputils.getMaxData' using jar 'hdfs:/user/hadoop/hiveUDF'

其中warning表示所在的库,在其他库使用getMaxData函数时必须带上warning库,即在其他库调用时使用warning.getMaxData()调用该UDF函数,as后面是包名.UDF类名,最后的jar包是所上传jar的hdfs地址

(5)验证
在default库中使用getMaxData函数,结果如下,验证成功
在这里插入图片描述
(6)删除函数
在hive客户端中输入

drop function warning.getMaxData

以上就是hive中udf函数的简单使用和删除了,下次再给大家尝试下用python写hive的udf函数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值