在shell腳本中設置的變量,可以通過hive -e直接使用,例如:
#!/bin/bash
tablename="student" #等號左右不能有空格
varsubject="Math"
hive -e "SELECT *
FROM ${tablename}
WHERE subjects = ${varsubject};"
方法總結為:
- 在shell腳本中添加變量
- 使用hive -e模式,在查詢語句字符串中插入變量 ${變量名}
shell腳本執(zhí)行時就會把 ${變量名} 部分替換,執(zhí)行所需的hive查詢語句。需要注意的是,在shell腳本中不能混用hive定義變量的方式,例如下面的腳本是不能運行的:
#!/bin/bash
tablename="student"
hive -hiveconf varsubject="Math" \
-e "
SELECT *
FROM ${tablename}
WHERE subjects = ${hiveconf:varsubject};"
這是因為該腳本是在shell環(huán)境中運行的,會把${hiveconf:varsubject}當作shell腳本變量去解析。但是并沒有在shell腳本中定義這個變量,所以會以空字符串放在這個位置。
可以把查詢語句寫成sql腳本,然后在shell中用hive -f調用,例如:
#!/bin/bash
hive -hiveconf tablename="student" \
-hiveconf varsubject="Math" \
-f hivequery.sql
其中被調用的hivequery.sql內容為:
SELECT *
FROM '${hiveconf:tablename}'
WHERE subjects = '${hiveconf:varsubject}';
hiveconf是設置hive配置屬性的,關于直接使用hive -hiveconf模式我還總結了另一篇文章,此外還可以通過python修改查詢語句達到同樣的目的:
在hive查詢中使用變量
利用Python替換Hive查詢語句中的變量