2016-07-06 63 views
1

使用Hive 0.13.0,我想根據模板評估變量,然後立即執行生成的Hive代碼(避免使用臨時中間文件)。將配置對象輸出到配置單元

這裏是想我做一個(非工作)例如:

template.hql

SELECT COUNT(*) FROM ${TABLE}; 

在shell:

export TABLE=DEFAULT.FOOTABLE 
envsubst < template.hql | hive 

是有一個特定的原因,這是行不通的,有沒有一個合適的方法來實現它?

+0

也許是因爲你的模板有'$ TABLE'而你的環境變量是'$ TABLES'(複數)? – bishop

+0

@bishop,不好意思,這只是玩具例子中的一個錯字 – mlegge

回答

3

取代按預期工作:

$ cat template.hql 
SELECT COUNT(*) FROM ${TABLE}; 
$ export TABLE=DEFAULT.FOOTABLE 
$ envsubst < template.hql 
SELECT COUNT(*) FROM DEFAULT.FOOTABLE; 

所以我懷疑hive在不讀取從標準查詢我從an online manual看到它支持-f參數,所以您可以手動創建該文件:

TMPFILE=$(mktemp) 
envsubst <template.hql> $TMPFILE 
hive -f $TMPFILE 
rm $TMPFILE 

如果你在慶典的新望版本,你能避免中間文件:

hive -f <(envsubst < template.hql) 

我不確定,但也檢查hive -f -可能從標準輸入讀取。