在Hive中执行联接操作时,我需要设置减速器的数量。我不想为我的每一份加入工作设置相同数量的减速器。我怎么能把它作为一个论点呢?提前谢谢。
在脚本文件的顶部,放置以下内容:
set mapred.reduce.tasks=128
目前唯一的方法是将一个Hive脚本拆分为多个部分,在这些部分中,重联接将放在不同的脚本中。然后,对于重型联接,可以指定大量的异径管。要一次性执行所有这些脚本,可以对shell脚本中列出的所有脚本使用hive -f
选项,如下所示:
#example of shell script RunMyHQL.sh
$HIVE_HOME/bin/hive -f /somepath/script1.hql
$HIVE_HOME/bin/hive -f /somepath/script2.hql
$HIVE_HOME/bin/hive -f /somepath/script3.hql
然后为RunMyHQL.sh文件分配适当的权限
chmod u+x /somepath/RunMyHQL.sh
然后执行shell脚本
./RunMyHQL.sh
script1、script2和script3中的每一个都可以包含所需数量的映射器和缩减器。如果这需要以特定的时间间隔反复运行,那么我建议您实现Oozie工作流。