【问题标题】:Hive Map reduce Job clarification on selecting columnHive Map减少了选择列的工作说明
【发布时间】:2014-09-29 11:15:34
【问题描述】:
Map reduce Jobs on Hive 声明
当我在 Hive 中查询以下语句时
hive> SELECT * FROM USERS LIMIT 100;
它不会启动 Map reduce Job,因为我们从表中选择所有内容并限制它返回的记录数
但是当我执行以下操作时
hive> select age,occupation from users limit 100;
实际上是在踢 Map reduce Job 吗?
这是否意味着,应用列级投影需要 Map reduce 作业,?虽然我没有对其应用任何类型的过滤器。
【问题讨论】:
标签:
hadoop
mapreduce
hive
【解决方案1】:
每当您运行正常的“select *”时,都会创建一个 fetch 任务,而不是一个 mapreduce 任务,它只是按原样转储数据而不对其进行任何操作。这相当于一个:
hadoop fs -cat $file_name
而每当您执行“选择列”时,地图作业会在内部过滤该特定列并提供输出。
【解决方案2】:
当你写select * from table_name时,会查看整个文件,而如果你选择column,则会启动一个map only job,不会为它启动reduce,因为我们选择的是整个column。
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