Как правильно использовать подстановку переменных улья
Когда я использую подстановку переменных в улье, я сталкиваюсь с некоторыми ошибками, но мне нужна ваша помощь.
Мой код:
set hievar:b='on t1.id=t2.id where t2.id is null';
select * from t_old as t1 full outer join t_new as t2 ${b};
когда я запускаю этот код в оболочке куста, он дает мне ошибку ${b}
,
Я также попробую это:
set hivevar:c='select * from t_old as t1 full outer join t_new as t2 on t1.id=t2.id where t2.id is null';
${c};
Это дает мне ту же ошибку.
1 ответ
Исправлять hivevar
namespace name (в вашем коде это hievar
) и удаляйте кавычки, потому что они также передаются как есть в Hive.
Пример:
set hivevar:b=where 1=1; --without quotes
select 1 ${hivevar:b}; --you can do without hivevar: as in your example
Результат:
OK
1
Time taken: 0.129 seconds, Fetched: 1 row(s)
Второй пример:
hive> set hivevar:c=select 1 where 1=1;
hive> ${c};
OK
1
Time taken: 0.491 seconds, Fetched: 1 row(s)