2013-01-07 13 views
0

儘管documentation指定了如何替換一個變量,但它並不支持列表。我可以在配置單元中使用變量替換來獲取值列表嗎?

我有一個需要一個月的每一天運行查詢,所以我想要做這樣的事情:

for day in days: 
    ALTER TABLE foo ADD PARTITION(${day=hiveconf:day}); 

有沒有辦法做到這一點沒有!使用某種腳本語言如python/bash。

我有一個python實現,但它需要爲每個查詢啓動一個新的配置單元過程。除了醜陋之外,由於蜂巢式的啓動時間,這對於小型查詢來說性能不佳。

回答

1

有沒有一種很好的方法來做到這一點,我敢肯定沒有輔助腳本語言就沒有辦法做到這一點。但它不是在類似的bash太痛苦了:

hive_script=foo.hql 
if [ -e "$hive_script" ] 
then 
    rm $hive_script 
fi 
days="1 2 3 4 5" 
for day in $days 
do 
    echo "ALTER TABLE foo ADD PARTITION(day=$day);" >> $hive_script 
done 
hive -f $hive_script 
rm $hive_script 

相同的策略可以在Python中使用:使用該腳本產生的所有要執行的命令,將其寫入到同一個文件。然後只需執行該文件。

+0

感謝您的回答。對於這樣一個簡單的事情來說,確實如此,但是人們想要實現一個通用的解決方案,您可以通過解析數組並將它們組合爲任意變量列表來取代所有的樂趣。 但由於它的接縫在配置單元中沒有解決方案(我不責怪它們),這是第二好的。 謝謝 – Velrok

相關問題