Hive Map减少选择列时的作业说明

时间:2014-09-29 11:15:35

标签: hadoop mapreduce hive

在Hive声明中映射减少作业

当我在Hive中查询以下语句时

hive>  SELECT * FROM USERS LIMIT 100;

它没有启动Map reduce Job ,因为我们从表中选择了所有内容并限制了它返回的记录数

但是,当我做以下

hive> select age,occupation from users limit 100;

它实际上踢了一个地图缩减工作?

是否意味着,应用列级投影需要Map reduce Job,?虽然我没有对它应用任何类型的过滤器。

2 个答案:

答案 0 :(得分:2)

每当你运行一个正常的'select *'时,就会创建一个fetch任务,而不是mapreduce任务,它只是按原样转储数据而不对它做任何事情。这等同于:

hadoop fs -cat $file_name

无论何时执行“选择列”,地图作业都会在内部过滤该特定列并提供输出。

答案 1 :(得分:0)

当您编写select * from table_name时,将查看整个文件,而如果您选择列,则会启动仅限地图的作业,因为我们正在选择整个列,因此不会为其启动减少。

Select * from table_name; -->  will not launch a MR JOB 
Select column from table_name; -->  will launch a M JOB (map only job)

Select MAX(column_name) from table_name; - >将推出MR JOB