我是Hadoop的新蜜蜂,所以请帮我解决这个基本问题。
当我在Hive中"select * from table where <condition>;"
时,我知道它将启动mapreduce,因为它需要对底层HDFS文件应用过滤。
但是当我在Hive上没有任何where子句的情况下select * from table
时,有时mapreduce正在启动,有时则不会。我的理解是理想情况下它不应该启动mapreduce,因为没有过滤条件。
有人可以解释一下为什么在少数情况下mapreduce会在Hive上发布吗?
先谢谢。
答案 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)。