它决定了地图任务的数量并减少了蜂巢中的任务?

时间:2014-04-25 07:59:40

标签: hadoop hive

我使用配置单元运行查询"从T1,T2中选择*,其中T1.a = T2.b",模式为T1(int,b int),T2(int, b int),当它运行时,生成了6个map任务和一个reduce任务,我想问一下,哪个确定了map任务的数量并减少了任务?是数据量?

3 个答案:

答案 0 :(得分:0)

映射任务的数量取决于数据量,块大小和拆分大小。 例如:如果块大小为128 MB,文件大小为1 GB,那么将有8个映射任务。您可以使用拆分大小来控制它。

默认情况下,Hive作业中的Reducer数量为1。您必须通过配置

更新它
<property>
  <name>mapred.reduce.tasks</name>
  <value>-1</value>
  <description>The default number of reduce tasks per job.  Typically set
   to a prime close to the number of available hosts.  Ignored when
   mapred.job.tracker is "local". Hadoop set this to 1 by default, whereas hive uses
  -1 as its default value.
   By setting this property to -1, Hive will automatically figure out what should be
   the number of reducers.
  </description>
</property>

答案 1 :(得分:0)

  

决定你的分割大小的参数,反过来你没有Map任务。

> mapred.max.split.size 
> mapred.min.split.size 
  

"mapred.max.split.size"可以单独为每个工作设置   你的conf对象。不要改变&#34; dfs.block.size&#34;这会影响你的   HDFS也是。

     如果mapred.min.split.size小于块大小,则

  mapred.max.split.size大于块大小,然后发送1个块   到每个地图任务。块数据被分成基于键值对   在您使用的输入格式上。

答案 2 :(得分:0)

<强>蜂房&GT; select * from emp; 然后将没有地图和减少将开始。意味着我们只是倾销数据。

如果我想要这样做多少地图并在我点击查询时减少开始。

<强>蜂房&GT;按名称从emp组中选择count(*);

如果我们在查询之前添加解释关键字,它将显示有多少地图和缩减将开始。

<强>蜂房&GT;按名称解释来自emp组的选择计数(*);