Hive之简单查询不启用MapReduce

原创 2015年07月06日 18:16:28

如果你想查询某个表的某一列,Hive默认是会启用MapReduce Job来完成这个任务,如下:

01 hive> SELECT id, money FROM m limit 10;
02 Total MapReduce jobs = 1
03 Launching Job 1 out of 1
04 Number of reduce tasks is set to 0 since there's no reduce operator
05 Cannot run job locally: Input Size (= 235105473) is larger than
06 hive.exec.mode.local.auto.inputbytes.max (= 134217728)
07 Starting Job = job_1384246387966_0229, Tracking URL =
08  
09 http://l-datalogm1.data.cn1:9981/proxy/application_1384246387966_0229/
10  
11 Kill Command = /home/q/hadoop-2.2.0/bin/hadoop job 
12 -kill job_1384246387966_0229
13 hadoop job information forStage-1: number of mappers: 1;
14 number of reducers: 0
15 2013-11-13 11:35:16,167 Stage-1 map = 0%,  reduce = 0%
16 2013-11-13 11:35:21,327 Stage-1 map = 100%,  reduce = 0%,
17  Cumulative CPU 1.26 sec
18 2013-11-13 11:35:22,377 Stage-1 map = 100%,  reduce = 0%,
19  Cumulative CPU 1.26 sec
20 MapReduce Total cumulative CPU time: 1 seconds 260 msec
21 Ended Job = job_1384246387966_0229
22 MapReduce Jobs Launched:
23 Job 0: Map: 1   Cumulative CPU: 1.26sec  
24 HDFS Read: 8388865 HDFS Write: 60 SUCCESS
25 Total MapReduce CPU Time Spent: 1 seconds 260 msec
26 OK
27 1       122
28 1       185
29 1       231
30 1       292
31 1       316
32 1       329
33 1       355
34 1       356
35 1       362
36 1       364
37 Time taken: 16.802 seconds, Fetched: 10 row(s)

  我们都知道,启用MapReduce Job是会消耗系统开销的。对于这个问题,从Hive0.10.0版本开始,对于简单的不需要聚合的类似SELECT <col> from <table> LIMIT n语句,不需要起MapReduce job,直接通过Fetch task获取数据,可以通过下面几种方法实现:
  方法一:

01 hive> set hive.fetch.task.conversion=more;
02 hive> SELECT id, money FROM m limit 10;
03 OK
04 1       122
05 1       185
06 1       231
07 1       292
08 1       316
09 1       329
10 1       355
11 1       356
12 1       362
13 1       364
14 Time taken: 0.138 seconds, Fetched: 10 row(s)

上面 set hive.fetch.task.conversion=more;开启了Fetch任务,所以对于上述简单的列查询不在启用MapReduce job!
  方法二:

1 bin/hive --hiveconf hive.fetch.task.conversion=more

  方法三:
上面的两种方法都可以开启了Fetch任务,但是都是临时起作用的;如果你想一直启用这个功能,可以在${HIVE_HOME}/conf/hive-site.xml里面加入以下配置:

01 <property>
02   <name>hive.fetch.task.conversion</name>
03   <value>more</value>
04   <description>
05     Some select queries can be converted to single FETCH task
06     minimizing latency.Currently the query should be single
07     sourced not having any subquery and should not have
08     any aggregations or distincts (which incurrs RS),
09     lateral views and joins.
10     1. minimal : SELECT STAR, FILTER on partition columns, LIMIT only
11     2. more    : SELECT, FILTER, LIMIT only (+TABLESAMPLE, virtual columns)
12   </description>
13 </property>

这样就可以长期启用Fetch任务了,很不错吧,也赶紧去试试吧!

Hive2.0新特性

转载自:http://www.36dsj.com/archives/60604 Apache Hive2.0的新特性介绍  雪姬 2016-09-07 9:24:15 Hadoop 评论(...
  • weinierzui
  • weinierzui
  • 2017年03月31日 19:12
  • 1003

hive中select 走与不走mapreduce

hive 0.10.0为了执行效率考虑,简单的查询,就是只是select,不带count,sum,group by这样的,都不走map/reduce,直接读取hdfs文件进行filter过滤。这样做的...
  • qiaochao911
  • qiaochao911
  • 2013年07月11日 14:43
  • 2122

文章标题

hive脚本设置头部参数以此来优化脚本,参数如下:--对于简单的列查询开启下面的设置就不需要走MR --例如SELECT id, money FROM m limit 10;(Hive0.10.0) ...
  • u011602318
  • u011602318
  • 2016年10月25日 14:30
  • 27

Hive中不走MapReduce的查询

在Hive中查询语句往往都要被解析成MapReduce的job进行计算,但是有两个查询语句是不走MapReduce的,如下: 1.查询某张表的所有数据 [java] view ...
  • liuxiao723846
  • liuxiao723846
  • 2017年04月08日 14:24
  • 977

Hive-为什么没有启动MapReduce任务

Hive-fetch task 优化 hive.fetch.task.conversion hive.fetch.task.aggr hive.fetch.task.conversion.thresh...
  • zhangxin1988
  • zhangxin1988
  • 2017年06月07日 20:41
  • 701

Mapreduce与Hive比较

1、背景介绍 早先的工作中,有很多比较复杂的分析工作,当时对hive还不熟悉,但是java比较熟悉,所以在进行处理的时候,优先选择了MR. 但是随着工作的数据内容越来越多,越来越复杂,对应的调...
  • xiaoshunzi111
  • xiaoshunzi111
  • 2015年11月03日 21:07
  • 2159

hive学习笔记:FetchTask

hive学习笔记:FetchTask             我们在执行hive代码的时候,一条简单的命令大部分都会转换成为mr代码在后台执行,但是有时候我们仅仅只是想获取一部分数据而已,仅仅是获取数...
  • liyaohhh
  • liyaohhh
  • 2016年02月16日 16:35
  • 2197

Hive快速入门

主要内容 Hive概述 Hive安装配置 数据类型和文件格式 HQL常用操作 1. Hive概述1.1 为什么使用HiveHadoop生态系统的诞生为高效快速地处理大数据...
  • Trigl
  • Trigl
  • 2017年03月11日 15:50
  • 1386

大数据(九) - Hive

构建在Hadoop之上的数据仓库,数据计算使用MR,数据存储使用HDFS         因为数据计算使用mapreduce,因此通常用于进行离线数据处理 Hive 定义了一种类 SQL 查询语言——...
  • matthewei6
  • matthewei6
  • 2016年01月19日 06:28
  • 2407

[Hive]简单查询不启用Mapreduce job而启用Fetch task

转载自:http://blog.csdn.net/wypblog/article/details/17410315 如果你想查询某个表的某一列,Hive默认是会启用MapReduce Job...
  • yeweiouyang
  • yeweiouyang
  • 2015年04月03日 09:21
  • 3160
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hive之简单查询不启用MapReduce
举报原因:
原因补充:

(最多只允许输入30个字)