與shell傳參一樣,當參數值裏面有空格時,需要用雙引號括起來,不然的話,會被當作兩個參數截斷。
問題描述:
Hive的腳本中需要給變量賦值,最常見的就是日期+時間
select a,b,c
from table
where bizdate=${hiveconf:bizdate}
執行的命令如果是hive -hiveconf bizdate="2020-05-15 15:00:00" -f xxx.hql
這樣傳入進去的參數值是2020-05-15
而不是想象中的 2020-05-15 15:00:00
解決這個問題,換個思路:既然在給shell的腳本傳入參數時,可以利用雙引號解決value中存在空格的情況,那麼我們這裏也用這個套路來嘗試下。
正確的傳參姿勢:
hive -hiveconf "bizdate='2020-05-15 15:00:00'" -f xxx.hql
下面就來個實際的操作
test.hql:
select "${hiveconf:bizhourtime}"
調用命令:
hive -hiveconf "bizhourtime=`date -d '1 day ago' '+%Y-%m-%d %H:00:00'`" -f test.hql