在多配置单元服务器中共享自定义项

rkkpypqq  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(403)

在我们的生产环境中,我们有多个hiveserver2以获得高可用性

beeline -u "jdbc:hive2//hs1.name.com"    
add jar <hdfs://ns:8020/path/udf.jar>
create  function myfunc as 'com.test.udf.UDF_CLASS' using jar 'hdfs://ns:8020/path/udf.jar'

user connect to hs1.name.com是可以的,但是当使用beeline connect另一个hiveserver2调用udf时,user get function not found出错,如

beeline -u "jdbc:hive2//hs2.name.com"
select myfunc(id) from table1

错误消息是
错误:编译语句时出错:失败:semanticexception[error 10011]:行1:7无效函数“myfunc”(state=42000,code=10011)在hs2.name.com上重启hiveserver2后,用户可以正确调用udf。 有没有办法不重新启动hiveserver2,而是让hiveserver2从metastore重新加载udfs信息? 谢谢@kishore,reload function` 太好了!

jv4diomz

jv4diomz1#

USE RELOAD FUNCTION;

从hive-2573开始,在一个hive cli会话中创建永久函数可能不会反映在hiveserver2或其他hive cli会话中,如果这些会话是在创建函数之前启动的。在hiveserver2或hivecli会话中发出reload函数将允许它获取可能由其他hivecli会话对永久函数所做的任何更改。
参考-https://cwiki.apache.org/confluence/display/hive/languagemanual+ddl#languagemanualddl-创建/删除/重新加载函数

相关问题