利用shell腳本設置hive查詢語句中的變量

在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查詢語句中的變量

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。