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任务了,很不错吧,也赶紧去试试吧!

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

hive count表提交mapreduce任务报错。

今天使用hive时发现用select * 查询单表,查询正常。 使用select 字段名 ,select count(*) ,及关联表查询时发生如下异常错误: Caused by: java.ne...

Hive中不走MapReduce的查询

在Hive中查询语句往往都要被解析成MapReduce的job进行计算,但是有两个查询语句是不走MapReduce的,如下: 1.查询某张表的所有数据 select * from employee...

hive中select 走与不走mapreduce

hive 0.10.0为了执行效率考虑,简单的查询,就是只是select,不带count,sum,group by这样的,都不走map/reduce,直接读取hdfs文件进行filter过滤。这样做的...

让Hive简单的查询不启用Mapreduce而启用Fetch task本地运行

查询某个表的某一列,Hive默认是会启用MapReduce来完成这个任务,如下: hive> SELECT uid, number FROM test limit 9; Total MapRedu...

Hive中小表与大表关联(join)的性能分析

经常看到一些Hive优化的建议中说当小表与大表做关联时,把小表写在前面,这样可以使Hive的关联速度更快,提到的原因都是说因为小表可以先放到内存中,然后大表的每条记录再去内存中检测,最终完成关联查询。...

Hive JOIN使用详解

Hive是基于Hadoop平台的,它提供了类似SQL一样的查询语言HQL。有了Hive,如果使用过SQL语言,并且不理解Hadoop MapReduce运行原理,也就无法通过编程来实现MR,但是你仍然...
  • dxl342
  • dxl342
  • 2016-07-04 11:32
  • 1101

Hive中小表与大表关联(join)的性能分析

http://blog.csdn.net/wisgood/article/details/17739177   这篇文章

hive 各种join使用实例

hive (test)> CREATE TABLE tmp_a(            > aID int,             > ...
  • mtj66
  • mtj66
  • 2016-12-31 11:48
  • 1116

hive 各种 join (left outer join、join、full outer join)

一、概念 1、左连接 left outer join 以左边表为准,逐条去右边表找相同字段,如果有多条会依次列出 2、连接join 找出左右相同同的记录 二、实验 1、准备数据 create ex...

Hive join on的不等条件实现方法

hql的join on操作只支持相等条件,比如:select * from a join b on a.id=b.id;但是不支持相等条件以外的情况,比如:select * from a join b...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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