热释光;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的情况下创建新会话。那是一个选择吗?
1条答案
按热度按时间zsbz8rwp1#
我知道的唯一办法就是重启Hive。
(我仍在寻找一种更新自定义项的好方法。)