1. 程式人生 > >shell指令碼執行hive命令傳值給sql檔案、shell傳參

shell指令碼執行hive命令傳值給sql檔案、shell傳參

使用場景,大資料平臺azkaban任務中通過shell指令碼呼叫sql檔案(尤其是呼叫多個sql時),希望可以傳參到sql檔案中

方法:本例以sh呼叫hive命令執行sql為例,道理相同

1、sh 檔案中執行hive -f 命令 將inputdate傳給sql檔案使用 如下

hive -hiveconf input_date=`date +%Y-%m-%d` -f dm_f_count_assigned_user.sql

sh中 用 -hiveconf input_date=`date +%Y-%m-%d` 這個變數去傳值

如果此處執行多次語句 也可以將input_date 作為變數提出來

2、sql檔案 獲取input_date

ALTER TABLE hive_dm.dm_f_count_assigned_user DROP IF EXISTS PARTITION (date_calculated='${hiveconf:input_date}');

sql中 用' ${hiveconf:input_date}' 來接收

提示,可以同時傳多個值

      -hiveconf input_date=`date +%Y-%m-%d`

      -hiveconf usename=`groot`

      -hiveconf password=`qwertyu596`

取值

     '${hiveconf:input_date}'

     '${hiveconf:usename}'

     '${hiveconf:password}'

此處取值使用了 單引號,因為我想要字串型別的值,也是大家最常用的。根據個人需要吧,如果你傳的是int型別,取值時不使用單引號,應該可以直接取到int型別,直接進行大小比較,計算之類的。。。哈哈  這個沒去細細研究。