Hive自定义UDF、UDAF、UDTF函数

持续更新中:

Java端:

1. UDF(一进一出)

1)创建一个Maven工程

2)导入依赖(hive版本是3.1.2)

<dependencies>
        <!-- https://mvnrepository.com/artifact/org.apache.hive/hive-exec -->
        <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-exec</artifactId>
            <version>3.1.2</version>
        </dependency>
</dependencies>

3)创建一个类

import org.apache.hadoop.hive.ql.exec.UDF;
/**
 * @version 1.0
 * @Author: zls
 * @Date: 2020/10/5 20:33
 * @Desc: 输入一个字符串,返回其小写
 */
public class Custom_UDF_Lower extends UDF {
    public String evaluate(final String s) {
        if (s == null) {
            return null;
        }
        return s.toLowerCase();
    }
}

4)打成jar包上传到服务器/opt/module/hive-3.1.2/datas/mylower.jar

5)将jar包添加到hive的classpath

hive (default)> add jar /opt/module/hive-3.1.2/datas/mylower.jar;
//或者0: jdbc:hive2://Linux201:10000>add jar /opt/module/hive-3.1.2/datas/mylower.jar;

6)创建临时函数与开发好的java class关联(也可以不使用临时函数,就是去掉temporary)

hive (default)> create temporary function mylower as "Custom_UDF_Lower";//as后边加的是全类名

7)即可在hql中使用自定义的函数

hive (default)> select ename, mylower(ename) lowername from emp;

 

2. UDAF(多进一出)

 
posted @ 2020-10-05 21:26  Mrzxs  阅读(400)  评论(0编辑  收藏  举报