更新配置单元自定义项的jar

6vl6ewon  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(451)

热释光;dr:如何在hive中更新自定义udf的jar?
我写了我自己的(通用的)自定义项,工作得很好。我可以定义一个新函数并将其与命令一起使用: CREATE FUNCTION myfunc AS 'io.company.hive.udf.myfunc' USING JAR 'hdfs:///myudfs/myfunc.jar'; 现在我想更新我的udf,因此我想在hdfs中使用相同名称的jar的更新版本。之后,发生的是:
对函数的第一次调用 java.io.IOException: Previous writer likely failed to write hdfs://ip-10-0-10-.eu-west-1.compute.internal:8020/tmp/hive/hive/_tez_session_dir/0de6055d-190d-41ee-9acb-c6b402969940/myfunc.jar Failing because I am unlikely to write too. 第二个电话 org.apache.hadoop.hive.ql.metadata.HiveException: Default queue should always be returned.Hence we should not be here. 日志文件显示:

Localizing resource because it does not exist: file:/tmp/8f45f1b7-2850-4fdc-b07e-0b53b3ddf5de_resources/myfunc.jar to dest: hdfs://ip-10-0-10-129.eu-west-1.
compute.internal:8020/tmp/hive/hive/_tez_session_dir/994ad52c-4b38-4ee2-92e9-67076afbbf10/myfunc.jar
tez.DagUtils (DagUtils.java:localizeResource(961)) - Looks like another thread is writing the same file will wait.
tez.DagUtils (DagUtils.java:localizeResource(968)) - Number of wait attempts: 5. Wait interval: 5000
tez.DagUtils (DagUtils.java:localizeResource(984)) - Could not find the jar that was being uploaded

我已经试过了:
把jar加到 hive.reloadable.aux.jars.path 以及 hive.aux.jar.path list jar/delete jar/create function/reload的不同组合都没有用。
我甚至有一个查询开始很明显,但只是挂在那里,没有前进,没有在日志中,没有dag创建。

INFO  : converting to local hdfs:///hive-udf-wp/hive-udf-wp.jar
INFO  : Added [/tmp/19e0c9fc-9c7c-4de5-a034-ced062f87f64_resources/hive-udf-wp.jar] to class path
INFO  : Added resources: [hdfs:///hive-udf-wp/hive-udf-wp.jar]

我认为,要求tex不要重用当前会话就可以做到这一点,因为这样就可以在没有旧版本jar的情况下创建新会话。那是一个选择吗?

zsbz8rwp

zsbz8rwp1#

我知道的唯一办法就是重启Hive。
(我仍在寻找一种更新自定义项的好方法。)

相关问题