簡體   English   中英

配置單元查詢中的Hive參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM