hive中的傳參與變量


發現自己確實越來越笨,好在解決了。

通常將hive的連接信息和sql語句寫在一個腳本里面執行,這樣看起來方便,修改起來也方便。

但是最近由於sql語句太長了,所以拆開兩部分。一部分是hive的連接,另一部分是sql文件。通過-f傳參執行。

beeline --hiveconf mapreduce.job.queuename=prod \
--hivevar data_day=${curr_dt} \
--hivevar product_a01=$product_a01 \
--hivevar product_a02=$product_a02 \
--hivevar product_b01=$product_b01 \
--hivevar product_b02=$product_b02 \
--hivevar product_b03=$product_b03 \
--hivevar product_c01=$product_c01 \
--hivevar product_d01=$product_d01 \
 -u 'jdbc:hive2://localhost:10000/default' -n "user" -p 'pwd' -f /home/hadoop/etl/test.sql

這里面用到了參數hivevar傳遞。

之前一個文件時,接收變量都是直接$var1或者${var1},所以在test.sql中也是使用${var1}這樣的方式來接收。但是發現放到一個shell循環中執行test.sql 出現不是想要的結果。

select * from table where day = '${data_day}';

最終在sql中修改成如下引用參數

select * from table where day = '${hivevar:data_day}';

 


 

hive -f傳參有兩種,

一種是hiveconf 用於傳遞系統配置類的參數,當然用來傳遞自定義變量也可以。

一種是hivevar 用於傳遞用戶自定義變量

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM