2012-02-13 52 views
7

我需要在Hive中进行加入操作时设置减少者数。我不想为每个加入作业设置相同数量的减速器。我怎样才能将其作为一个论点来提及?提前致谢。Hive加入集减少者数

回答

14

在脚本文件的顶部,把这个:

set mapred.reduce.tasks=128 
+0

这将为查询的所有部分设置它,而不是针对特定的连接。没有办法在每个连接的基础上完成(至少现在还没有) – 2012-02-19 23:58:32

+0

我需要每个连接的基础。我的意思是我在脚本中有多个连接查询,每个查询都有不同的输入大小。所以我想要将大量的reducer设置为重连接以及减少连接数量非常少的reducer数量。 – Sandeep 2012-02-20 10:40:24

+0

我需要这样的东西。 HIVE_HOME/bin/hive -set mapred.reducer.tasks = “命令”。这样我就可以从终端运行配置单元命令。 – Sandeep 2012-02-20 10:51:33

0

到目前做到这一点的唯一方法是你的一个蜂巢的脚本分为多个部分,其中重联接将被放在一个不同的脚本。然后对于重连接,您可以指定大量的缩减器。要执行一气呵成所有这些脚本,你可以使用hive -f选项在shell脚本中列出的所有脚本如下图所示: #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工作流程。