Hive執行指令碼時傳參
阿新 • • 發佈:2018-12-22
使用-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}’)
其他方法{待更新}