首页 > 试题广场 >

所有的hive任务都会有reducer的执行吗?

[单选题]
所有的hive任务都会有reducer的执行吗?
  • 不是
选A

Hadoop MapReduce程序中,reducer个数的设定极大影响执行效率 ,这使得Hive怎样决定reducer个数成为一个关键问题。遗憾的是Hive的 估计机制很弱,不指定reducer个数的情况下,Hive会猜测确定一个reducer个数,基于以下两个设定:

1. hive.exec.reducers.bytes.per.reducer(默认为1000^3)

2. hive.exec.reducers.max(默认为999)

计算reducer数的公式很简单:

N=min(参数2,总输入数据量/参数1)

通常情况下,有必要手动指定reducer个数。考虑到map阶段的输出数据量通常会比输入有大幅减少,因此即使不设定reducer个数,重设参数2还是必要的。依据Hadoop的经验,可以将参数2设定为0.95*(集群中TaskTracker个数)。

发表于 2017-02-09 10:48:53 回复(0)
只走map端的hive执行:
1.全局查找;(ex:select * from table;)
2.查找列、列裁剪;
3.限制查找;(ex:limit n;)
编辑于 2021-11-25 16:23:51 回复(0)
不会 
在hive-default.xml.template文件中hive.fetch.task.conversion默认是more,老版本hive默认是minimal,该属性修改为more以后,在全局查找、字段查找、limit查找等都不走mapreduce。

发表于 2018-12-11 19:15:30 回复(0)
不会,比如说select *
发表于 2018-09-12 21:00:30 回复(0)