如何在 Hive 中重新加载更新的自定义 UDF 函数?
How to reload the updated custom UDF function in Hive?
我在 java 中编写了自定义 UDF 并打包在 jar
文件中。然后,我使用以下方法将其添加到 Hive 中:
create temporary function isstopword as 'org.dennis.udf.IsStopWord';
一切正常。但是,我更新了UDF中的一小部分后,我又做了前面的步骤,因此Hive显然仍然使用旧版本的UDF。
如何刷新 UDF 的更新版本?
我试图删除 hdfs 中的旧 jar
文件,并删除 udf 函数:
DROP TEMPORARY FUNCTION IF EXISTS isstopword;
然后重新创建一个同名的新函数,它仍然使用旧版本的UDF。
您添加的所有 jar 和您创建的临时函数仅特定于该特定的配置单元会话。一旦退出该会话,所有临时功能将永远丢失。
您是否尝试关闭会话并再次重复这些步骤。
我按照这个文档解决了它:http://bdlabs.edureka.co/static/help/topics/cm_mc_hive_udf.html#concept_zb2_rxr_lw_unique_1
一般有以下几个步骤:
- 在配置单元中添加了一个配置-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;
在hive控制台,运行 list jar;
查看本地jar文件,
它会打印这样的东西:
/tmp/83ce8586-7311-4e97-813f-f2fbcec63a55_resources/isstopwordudf.jar
然后在您的服务器文件系统中删除它们。
- 再次创建临时函数。
create temporary function isstopword as 'org.dennis.udf.IsStopWord';
通过上述步骤,它对我有用!
我在 java 中编写了自定义 UDF 并打包在 jar
文件中。然后,我使用以下方法将其添加到 Hive 中:
create temporary function isstopword as 'org.dennis.udf.IsStopWord';
一切正常。但是,我更新了UDF中的一小部分后,我又做了前面的步骤,因此Hive显然仍然使用旧版本的UDF。
如何刷新 UDF 的更新版本?
我试图删除 hdfs 中的旧 jar
文件,并删除 udf 函数:
DROP TEMPORARY FUNCTION IF EXISTS isstopword;
然后重新创建一个同名的新函数,它仍然使用旧版本的UDF。
您添加的所有 jar 和您创建的临时函数仅特定于该特定的配置单元会话。一旦退出该会话,所有临时功能将永远丢失。
您是否尝试关闭会话并再次重复这些步骤。
我按照这个文档解决了它:http://bdlabs.edureka.co/static/help/topics/cm_mc_hive_udf.html#concept_zb2_rxr_lw_unique_1
一般有以下几个步骤:
- 在配置单元中添加了一个配置-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;
在hive控制台,运行
list jar;
查看本地jar文件, 它会打印这样的东西:
/tmp/83ce8586-7311-4e97-813f-f2fbcec63a55_resources/isstopwordudf.jar
然后在您的服务器文件系统中删除它们。
- 再次创建临时函数。
create temporary function isstopword as 'org.dennis.udf.IsStopWord';
通过上述步骤,它对我有用!