hiveMap减少了选择列时的作业澄清

6pp0gazn  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(352)

Map配置单元上的reduce作业语句
当我在配置单元中查询以下语句时

hive>  SELECT * FROM USERS LIMIT 100;

它不会启动map reduce作业,因为我们正在从表中选择所有内容并限制它返回的记录数
但当我做以下事情时

hive> select age,occupation from users limit 100;

这真的是一个Map缩小的工作?
这是否意味着,应用列级投影需要一个map reduce作业?虽然我没有在上面加任何过滤器。

m4pnthwp

m4pnthwp1#

当你写作的时候 select * from table_name ,则会查看整个文件,而如果选择“列”,则会启动“仅Map”作业,不会为其启动任何reduce,因为我们选择的是整个列。

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作业
xn1cxnb4

xn1cxnb42#

无论何时运行普通的“select*”,都会创建一个fetch任务,而不是mapreduce任务,该任务只是按原样转储数据,而不对其执行任何操作。这相当于:

hadoop fs -cat $file_name

然而,每当您执行“select column”时,Map作业都会对该特定列进行内部过滤并给出输出。

相关问题