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