2016-05-13 4 views
2

в Hive Я хотел бы динамически извлекать информацию из таблицы, сохранять ее в переменной и далее использовать ее. Рассмотрим следующий пример, где я извлекаю максимум столбца var и хочу использовать его в качестве условия в следующем запросе.HiveQL: использование результатов запроса в качестве переменных

set maximo=select max(var) from table; 

select 
    * 
from 
    table 
where 
    var=${hiveconf:maximo} 

Это не работает, хотя

set maximo=select max(var) from table; 

${hiveconf:maximo} 

показывает мне желаемый результат.

Выполнение:

select '${hiveconf:maximo}' 

дает

"select max(var) from table" 

хотя.

Лучшие

ответ

4

ульев Заменители переменные, как есть, и не выполняет их. Используйте сценарий оболочки оболочки, чтобы получить результат в переменной и передать его вашему сценарию Hive.

maximo=$(hive -e "set hive.cli.print.header=false; select max(var) from table;") 
hive -hiveconf "maximo"="$maximo" -f your_hive_script.hql 

И после этого внутри скрипта вы можете использовать select '${hiveconf:maximo}'

Смежные вопросы