2016-07-06 7 views
1

ハイブ0.13.0を使用しているので、テンプレートに対して変数を評価し、結果のハイブコードをすぐに実行したいと思います。ここでパイプenvsubstのハイブへの出力

は私が何をしたいかの(非稼働)の例である:シェルで

template.hql

SELECT COUNT(*) FROM ${TABLE}; 

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

ですそれがうまくいかない特別な理由があり、それを達成するための適切な方法がありますか?

+0

あなたの環境変数が '$ TABLES'(複数形)の間にテンプレートに' $ TABLE'があると思われますか? – 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 

あなたはbashの新しめのバージョンにしている場合は、中間ファイルを避けることができます。

hive -f <(envsubst < template.hql) 

わかりませんが、hive -f -がstdinから読み取れるかどうかを確認してください。

関連する問題