Лучше использовать hivevar
пространство имен для того же самого.
Вы можете распечатать все переменные, используя команду ! echo
:
set hivevar:var0=value0;
hive> ! echo Variable hivevar:var0 is ${hivevar:var0};
Результат:
Variable hivevar:var0 is value0
Также используйте explain extended <query>
- он напечатает подробный план запроса с предикатами и потерпит неудачу, если это синтаксическая ошибка.
Обновление: также вы можете использовать SELECT для того же, и Hive может выполнять простые запросы без запуска MR, если *Для 1014 * установлено значение more
или minimal
.Если вы используете Qubole, добавьте также limit 1
к запросу:
set hive.fetch.task.conversion=more;
select 'Variable hivevar:var0 is', '${hivevar:var0}' limit 1;
Почему вам может потребоваться сделать это с помощью SELECT?Например, для простой проверки параметров с использованием приведения или некоторой UDF.Если вам нужно проверить, имеет ли параметр тип DATE
, используйте
set hive.fetch.task.conversion=more;
select 'Variable hivevar:var0 is', date '${hivevar:var0}' limit 1;
В этом случае, если ${hivevar:var0}
не является датой, исключение приведения типа будет выдано, и выполнение скрипта будет прекращено.