В нашей производственной среде у нас есть несколько 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'
Пользователь подключается к hs1.name.com в порядке, но пользователь получает , функция ненайдено ОШИБКА при использовании beeline подключите другой hiveserver2 для вызова UDF, например
beeline -u "jdbc:hive2//hs2.name.com"
select myfunc(id) from table1
Сообщения об ошибках
Ошибка: ошибка при компиляции оператора: СБОЙ: SemanticException [Ошибка10011]: строка 1: 7 Неверная функция 'myfunc' (состояние = 42000, код = 10011) `
После перезапуска hiveserver2 на hs2.name.com пользователь может правильно вызывать UDF.
Есть ли какой-то способ не перезапускать hiveserver2, но сказал hiveserver2 перезагрузить информацию UDF из metastore?
Спасибо @Kishore, reload function
отлично!