美文网首页
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