【问题标题】:Hive join set number of reducersHive 连接集数量的 reducer
【发布时间】:2012-03-05 04:22:14
【问题描述】:

我需要在 Hive 中进行连接操作时设置减速器的数量。我不想为我拥有的每个加入作业设置相同数量的减速器。我怎么能提到它作为一个论点?提前致谢。

【问题讨论】:

    标签: hadoop mapreduce hive


    【解决方案1】:

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

    set mapred.reduce.tasks=128
    

    【讨论】:

    • 这将为查询的所有部分设置它,而不是为特定的连接设置。没有办法在每个加入的基础上做到这一点(至少现在还没有)
    • 我每次加入都需要它。我的意思是我的脚本中有多个连接查询,每个查询都有不同的输入大小。所以我想为重连接设置大量的reducer,在连接数据非常少的情况下设置更少的reducer。
    • 我需要这样的东西。 HIVE_HOME/bin/hive -set mapred.reducer.tasks=“命令”。这样我就可以从终端运行 hive 命令了。
    【解决方案2】:

    目前执行此操作的唯一方法是将您的一个 Hive 脚本拆分为多个部分,其中重连接将放在不同的脚本中。然后对于重连接,您可以指定大量的减速器。要一次性执行所有这些脚本,您可以将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 工作流程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-03
      • 1970-01-01
      • 2013-01-21
      • 2018-06-04
      • 1970-01-01
      • 2020-12-10
      • 2015-06-22
      相关资源
      最近更新 更多