#exception #hive #hiveql
#исключение #улей #hiveql
Вопрос:
Я хочу вызвать исключение при определенных обстоятельствах, скажем, при некоторых if
или case
условиях. Я делаю это для возврата некоторого failure
статуса, если определенное условие не выполнено, чтобы я мог знать и иметь дело с этим.
Я пробовал несколько методов, но ни один из них не мог вызвать исключение только при некотором условии:
- выберите какой-либо столбец, которого не существует:
Exception
возникает при синтаксическом анализе.- разделите некоторое значение на 0: возвращается значение null вместо повышения
Exception
- сделайте некоторое утверждение в UDF: утверждения не разрешены в UDF
Интересно, возможно ли преднамеренное исключение для завершения программы.
например (не легальный HiveQL)
ВЫБЕРИТЕ СЛУЧАЙ,
some_condition
КОГДАtrue
ЗАТЕМcontinue
ELSEexception
ЗАВЕРШИТСЯ КАКcondition
Ответ №1:
Взгляните на assert_true
UDF, похоже, это именно то, что вам нужно.
hive> select assert_true (2<1);
OK
Failed with exception java.io.IOException:org.apache.hadoop.hive.ql.metadata.HiveException: ASSERT_TRUE(): assertion failed.
Time taken: 0.497 seconds
Комментарии:
1. @Neil он завершает работу с такими сценариями, если у вас нет
hive.cli.errors.ignore=true
(для которого по умолчанию установлено значение false). Проверено с помощью Hive версии 2.1.1.