1. 程式人生 > >Hive執行指令碼時傳參

Hive執行指令碼時傳參

使用-hiveconf傳參

測試指令碼

-- test.sql

select 'Start Testing ...';

select ${hiveconf:day}, '${hiveconf:url}';

select 'Test End!';

命令列

hive -hiveconf day=20180716 -hiveconf url='www.baidu.com' -S -f test.sql

結果

Start Testing ...
20180716    www.baidu.com
Test End!

注意

hive -hiveconf day='monday'
-hiveconf url='www.baidu.com' -S -f test.sql

執行上述命令,會報如下錯誤:

Start Testing ...
FAILED: SemanticException [Error 10004]: Line 3:7 Invalid table alias or column reference 'monday': (possible column names are: )

其原因在於,sql指令碼中的${hiveconf:day}沒有加引號,即day預設為數字型引數。然而,上述命令傳入了字元型引數day=’monday’,導致解析錯誤。

因此,字元型引數傳參時,在指令碼中必須加引號(如’${hiveconf:url}’)

,才能正確獲得引數。

其他方法{待更新}

參考