MapReduce作业的标准在Hive中启动

时间:2017-03-13 05:36:47

标签: hadoop mapreduce hive

我是Hadoop的新蜜蜂,所以请帮我解决这个基本问题。

当我在Hive中"select * from table where <condition>;"时,我知道它将启动mapreduce,因为它需要对底层HDFS文件应用过滤。

但是当我在Hive上没有任何where子句的情况下select * from table时,有时mapreduce正在启动,有时则不会。我的理解是理想情况下它不应该启动mapreduce,因为没有过滤条件。

有人可以解释一下为什么在少数情况下mapreduce会在Hive上发布吗?

先谢谢。

1 个答案:

答案 0 :(得分:1)

这由两个Hive属性

控制
  • hive.fetch.task.conversion
  • hive.fetch.task.conversion.threshold

SELECT未设置为hive.fetch.task.conversion时,简单的none查询会执行获取任务而不是mapreduce任务。

但如果table中文件的总大小超过hive.fetch.task.conversion.threshold中设置的字节阈值,则会触发mapreduce任务。

Hive-0.14.0及更高版本中hive.fetch.task.conversion.threshold的默认值为1073741824字节(1GB)。