variables - 我可以在配置单元中使用变量替换来获取值列表吗?

标签 variables hadoop hive

尽管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/

相关文章:

PHP - 包含文件而不继承变量?

javascript - 如何将选择的每个字符存储到变量中? JS

Hadoop 作业在本地模式下运行。但是 Oozie 作业以分布式模式运行

sql - Apache Drill 对现有 Hadoop 集群中的其他 Hadoop 生态系统成员有什么负面影响吗?

hadoop - 命令 "hadoop fs -ls ."不起作用

javascript - 使用 eval() 定义变量显示未定义错误

variables - 在 Kotlin 中一次定义多个变量(例如 Java : String x, y,z;)

hadoop - datastax cqlsh alter table add column,但在配置单元中看不到该列,怎么办?

hadoop - hive hadoop权限不正确

hadoop - Hive 查询中的聚合列使用