[英]Hive Parameter in hive query
我有兩個代碼。
一個名為testing.hql
select dt, '${hiveconf:var}' from temp_table;
另一個名為testing.sh
temp= date --date='yesterday' +%y%m%d
hive -f testing.hql -hiveconf var=$temp
所以基本上我試圖將日期值傳遞給查詢,以便我可以根據當前日期過濾查詢中的數據。
我通過這個命令運行它。 簡單。
./testing.sh
這不起作用,有人可以快速檢查,看看哪個部分我犯了錯誤?
基本上我想做的是
select jobid from temp_table where dt >= '${hiveconf:var}';
所以我得到的jobid只是昨天完成的,因為shell腳本將參數設置為昨天的日期。
謝謝!
目前,這會在dt值之后輸出空白空間。
弄清楚了。
2個簡單的錯誤。
1)在執行shell腳本時,執行行必須用`包裝。 所以我做了
temp=`date --date='yesterday' +%y%m%d`
hive -f testing.hql -hiveconf var=$temp
它就像一個魅力
2)在查詢中,參數必須是雙引號。
select jobid from temp_table where dt >= "${hiveconf:var}";
希望這個問題可以幫助那些有這個問題的人。
你可以使用BeeTamer。 它允許將結果(或部分結果)存儲在變量中,稍后在代碼中使用此變量。
Beetamer是Hive或Impala的宏擴展,允許擴展Apache Hive和Cloudera Impala引擎的功能。
select avg(a) from abc;
%capture MY_AVERAGE;
select * from abc2 where avg_var=#MY_AVERAGE#;
在這里,您將查詢的平均值保存到宏變量MY_AVERAGE中,然后在第二個查詢中重復使用它。
在temp = remove之后有一個空間可能應該解決問題
temp=<blank>date ...
temp變量應聲明如下,
temp=$(date --date='yesterday' +%y%m%d)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.