美文网首页
hive自定义UDF函数,步骤详解

hive自定义UDF函数,步骤详解

作者: 夜希辰 | 来源:发表于2022-01-04 15:18 被阅读0次

目录
一、自定义UDF函数--计算字符串长度
1、添加pom.xml文件
2、自定义UDF函数,java类
3、打包上传到liunx
二、创建hive函数
1、hive客户端,添加jar包
2、创建hive函数
3、测试并查看结果

UDF函数是一进一出函数,如hive中的substr、date_format、date_add、date_sub都是UDF函数。

自定义UDF函数步骤如下:
  • 1)继承org.apache.hadoop.hive.ql.exec.UDF
  • 2)写固定的evaluate()方法
    该方法必须有返回值,evaluate方法支持重载。业务逻辑处理写在evaluate()方法中。对于每行数据都会调用一次evaluate()函数

注意继承UDF类时,不会报错、不需要实现抽象方法,这时需要我们写一个固定的evaluate()方法,而且方法名必须是evaluate。

一、自定义UDF函数--计算字符串长度

1、添加pom.xml文件

<properties>
    <project.build.sourceEncoding>UTF8</project.build.sourceEncoding>
    <hive.version>1.2.1</hive.version>
</properties>

<dependencies>
    <!--添加hive依赖-->
    <dependency>
        <groupId>org.apache.hive</groupId>
        <artifactId>hive-exec</artifactId>
        <version>${hive.version}</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

2、自定义UDF函数,java类

package com.atguigu.udf;
import org.apache.hadoop.hive.ql.exec.UDF;

public class LengthUDF extends UDF {
    //业务逻辑处理
    //evaluate方法的参数为,hive函数中作用的字段类型
    //int 返回值类型可以是int ,也可以是string,或者是其他数据类型
    public int evaluate(String line){
        int lineLength = line.length();
        return lineLength;
    }
    
}

编写一个UDF,关键在于自定义Java类需要继承UDF类并实现evaluate()函数。
因为在hive客户端执行查询时,对于每行输入都会调用evaluate()函数,evaluate()函数处理后的值会返回给hive。

3、打包上传到liunx

二、创建hive函数

1、hive客户端,添加jar包

在hive客户端,将xxx HiveUDF.jar文件加载到类路径:

add jar /home/atguigu/bin/hivefunction-20220111-1.0-SNAPSHOT.jar;

2、创建hive函数

1) 创建临时函数语法:

CREATE TEMPORARY FUNCTION function_name AS class_name;  

# function_name 函数名  
# class_name 类路径,包名+类名 

2)创建永久函数语法

create function small as 'com.qqhru.hive.LogUDTF' using jar '/user/hive/jars/1.jar';

  • 这里测试,我们创建临时函数
CREATE TEMPORARY FUNCTION LengthUDF AS 'com.atguigu.udf.LengthUDF'; 

//cn.hust.book.bigdata.UDFDemo对应java程序包名+类名

3、测试并查看结果

select LengthUDF(name),name from person;

参考文章:hive自定义函数UDF的使用方法

相关文章

网友评论

      本文标题:hive自定义UDF函数,步骤详解

      本文链接:https://www.haomeiwen.com/subject/nybqcrtx.html