Hive-UDF自定义函数操作流程-Jar包操作

本文介绍了使用IDEA新建Maven工程自定义UDF的操作流程,包括配置pom.xml、编写功能代码、打包生成.jar文件、将jar包拖到指定目录、在hive界面添加依赖和创建临时函数等步骤,还扩展了打jar包的方式及执行jar包的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

按照以下流程操作

1、使用IDEA新建Maven工程udf
2、配置Maven工程的pom.xml,参考《使用IDEA新建MAVEN工程配置》,然后导包
3、新建一个自定义的继承于UDF的子类
4、写入想实现的功能
4.1、导入依赖hive-exec
4.2、在<build>标签里加入<finalName>myudf</finalName>,也就是jar包的名字

import java.util.UUID;

public class GeneratorUUID extends UDF {
    public String evaluate(){
        String uuid = UUID.randomUUID().toString().replaceAll("-", "");
        return uuid;
    }
}

5、功能测试成功后,右击右侧靠边栏的MavenProjects,点开Lifecycle,双击其中的package,系统就会自动打包生成一个.jar文件(执行包),并给出jar包的路径。
6、进入jar包的文件目录,修改名字为自己想要的名字,或参考4.2的方法改名
7、把jar包通过XFTP拖到虚拟机指定目录(或者,hive文件的子目录lib里(存放jar包的地方))
8、进入hive界面,输入下面两条语句,一条是增加这个依赖jar包,第二条是创建临时函数(毕竟第一次写的函数功能未必强大):
add jar PATH/JAR_NAME;

add jar /opt/software/hadoop/hive110/lib/udf-1.0-xym.jar;

create temporary function FUNCTION_NAME as ‘DIR.PROJECT_NAME.CLASS_NAME’;

create temporary function first_day as 'cn.kgc.myudf.GeneratorUUID ';

8.1、测试jar包的使用,测试成功后即可正常调用了

select guuid();

PS:扩展一下打jar包的方式

  • 在生产环境中,很多时候我们需要用到可执行jar包(有main函数的主类),可执行jar包分为胖包和瘦包,点击Project Structure,选Artificts,然后点左上角的+号,Empty为瘦包,只有主类(需要手动添加manifest文件);另一个为胖包,包含依赖。然后在工具栏build一下即可

  • Maven工程双击install即可生成资源包
    在这里插入图片描述
    执行jar包的方式:

  • java -jar XXX.jar [参数]:胖包,manifest里有主类

  • java -cp XXX.jar Main_class_path [参数]:瘦包,manifest里没有主类,需要指定

在这里插入图片描述
打包插件

    <build>
        <!--<finalName>test-1.0-SNAPSHOT</finalName>-->
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                        <mainClass>test.core.Core</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
                <!--下面是为了使用 mvn package命令,如果不加则使用mvn assembly-->
                <executions>
                    <execution>
                        <id>make-assemble</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值