如何在配置单元中重新加载更新的自定义udf函数?

biswetbf  于 2021-06-25  发布在  Hive
关注(0)|答案(2)|浏览(674)

我用java编写了一个自定义的udf,并打包在一个 jar 文件。然后,我使用以下方法将其添加到hive中:

create temporary function isstopword as 'org.dennis.udf.IsStopWord';

一切都很顺利。但是,在我更新了udf中的一小部分之后,我再次执行了前面的步骤,因此hive显然仍然使用旧版本的udf。
如何刷新自定义项的更新版本?
我试图删除旧的 jar 在hdfs中创建文件,并使用以下命令删除udf函数:

DROP TEMPORARY FUNCTION IF EXISTS isstopword;

然后重新创建一个同名的新函数,它仍然使用旧版本的udf。

r6hnlfcb

r6hnlfcb1#

我按照这个解决了document:http用法:/bdlabs.edureka.co/static/help/topics/cm\u mc\u hive\u udf.html\concept\u zb2\u rxr\u lw\u unique\u 1
一般按以下步骤进行:
在hive-site.xml中添加配置,然后重新启动配置单元服务器。

<property>
    <name>hive.reloadable.aux.jars.path</name>
    <value>/user/hive/udf</value>
</property>

删除hdfs中的旧jar文件,并上载新jar文件。 DROP TEMPORARY FUNCTION IF EXISTS isstopword; 在配置单元控制台中,运行 list jar; 要检查本地jar文件,它将打印如下内容:

/tmp/83ce8586-7311-4e97-813f-f2fbcec63a55_resources/isstopwordudf.jar

然后在服务器文件系统中删除它们。
再次创建临时函数。

create temporary function isstopword as 'org.dennis.udf.IsStopWord';

通过以上步骤,我成功了!

vngu2lb8

vngu2lb82#

您添加的所有jar和创建的临时函数仅特定于特定的配置单元会话。一旦退出该会话,所有临时函数将永远丢失。
是否尝试关闭会话并再次重复这些步骤。

相关问题