尽管documentation指定了如何替换变量,但它并不支持列表。
我有一个查询需要在一个月的每一天运行,因此我想执行以下操作:
for day in days:
ALTER TABLE foo ADD PARTITION(${day=hiveconf:day});
有没有办法做到这一点!使用某种脚本语言(例如python / bash)。
我有一个python实现,但是它需要为每个查询启动一个新的配置单元过程。除了难看之外,由于配置单元启动时间过长,这对于小型查询也有较差的性能。
最佳答案
确实没有一个很好的方法来执行此操作,而且我可以肯定,没有辅助脚本语言就根本无法做到这一点。但这在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中可以使用相同的策略:让脚本生成要执行的所有命令,并将它们写入同一文件。然后只需执行该文件。
关于variables - 我可以在配置单元中使用变量替换来获取值列表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14194595/