在Hive声明中映射减少作业
当我在Hive中查询以下语句时
hive> SELECT * FROM USERS LIMIT 100;
它没有启动Map reduce Job ,因为我们从表中选择了所有内容并限制了它返回的记录数
但是,当我做以下
时hive> select age,occupation from users limit 100;
它实际上踢了一个地图缩减工作?
是否意味着,应用列级投影需要Map reduce Job,?虽然我没有对它应用任何类型的过滤器。
答案 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