Hive:简单查询不启用Mapreduce job而启用Fetch task
来源:互联网 发布:csgo淘宝钥匙 编辑:程序博客网 时间:2024/06/18 08:31
写在前面的话,学Hive这么久了,发现目前国内还没有一本完整的介绍Hive的书籍,而且互联网上面的资料很乱,于是我决定写一些关于《Hive的那些事》序列文章,分享给大家。我会在接下来的时间整理有关Hive的资料,如果对Hive的东西感兴趣,请关注本博客。
如果你想查询某个表的某一列,Hive默认是会启用MapReduce Job来完成这个任务,如下:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
hive> SELECT id, money FROM m limit
10
;
Total MapReduce jobs =
1
Launching Job
1
out of
1
Number of reduce tasks is set to
0
since there's no reduce operator
Cannot run job locally: Input Size (=
235105473
) is larger than
hive.exec.mode.local.auto.inputbytes.max (=
134217728
)
Starting Job = job_1384246387966_0229, Tracking URL =
http:
//l-datalogm1.data.cn1:9981/proxy/application_1384246387966_0229/
Kill Command = /home/q/hadoop-
2.2
.
0
/bin/hadoop job
-kill job_1384246387966_0229
hadoop job information
for
Stage-
1
: number of mappers:
1
;
number of reducers:
0
2013
-
11
-
13
11
:
35
:
16
,
167
Stage-
1
map =
0
%, reduce =
0
%
2013
-
11
-
13
11
:
35
:
21
,
327
Stage-
1
map =
100
%, reduce =
0
%,
Cumulative CPU
1.26
sec
2013
-
11
-
13
11
:
35
:
22
,
377
Stage-
1
map =
100
%, reduce =
0
%,
Cumulative CPU
1.26
sec
MapReduce Total cumulative CPU time:
1
seconds
260
msec
Ended Job = job_1384246387966_0229
MapReduce Jobs Launched:
Job
0
: Map:
1
Cumulative CPU:
1.26
sec
HDFS Read:
8388865
HDFS Write:
60
SUCCESS
Total MapReduce CPU Time Spent:
1
seconds
260
msec
OK
1
122
1
185
1
231
1
292
1
316
1
329
1
355
1
356
1
362
1
364
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
02
03
04
05
06
07
08
09
10
11
12
13
14
hive> set hive.fetch.task.conversion=more;
hive> SELECT id, money FROM m limit
10
;
OK
1
122
1
185
1
231
1
292
1
316
1
329
1
355
1
356
1
362
1
364
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
02
03
04
05
06
07
08
09
10
11
12
13
<property>
<name>hive.fetch.task.conversion</name>
<value>more</value>
<description>
Some select queries can be converted to single FETCH task
minimizing latency.Currently the query should be single
sourced not having any subquery and should not have
any aggregations or distincts (which incurrs RS),
lateral views and joins.
1
. minimal : SELECT STAR, FILTER on partition columns, LIMIT only
2
. more : SELECT, FILTER, LIMIT only (+TABLESAMPLE, virtual columns)
</description>
</property>
这样就可以长期启用Fetch任务了,很不错吧,也赶紧去试试吧!
本博客文章除特别声明,全部都是原创!
尊重原创,转载请注明: 转载自过往记忆(http://www.iteblog.com/)
本文链接地址: 《Hive:简单查询不启用Mapreduce job而启用Fetch task》(http://www.iteblog.com/archives/831)
E-mail:wyphao.2007@163.com QQ:397090770
尊重原创,转载请注明: 转载自过往记忆(http://www.iteblog.com/)
本文链接地址: 《Hive:简单查询不启用Mapreduce job而启用Fetch task》(http://www.iteblog.com/archives/831)
E-mail:wyphao.2007@163.com QQ:397090770
3 0
- Hive:简单查询不启用Mapreduce job而启用Fetch task
- Hive:简单查询不启用Mapreduce job而启用Fetch task
- Hive:简单查询不启用Mapreduce job而启用Fetch task
- Hive:简单查询不启用Mapreduce job而启用Fetch task
- [Hive]简单查询不启用Mapreduce job而启用Fetch task
- Hive:简单查询不启用Mapreduce job而启用Fetch task
- 让Hive简单的查询不启用Mapreduce而启用Fetch task本地运行
- Hive快捷查询:不启用Mapreduce job启用Fetch task三种方式介绍
- Hive快捷查询:不启用Mapreduce job启用Fetch task三种方式介绍
- Hive之简单查询不启用MapReduce
- Hive简单查询的Fetch Task功能与实战
- 启用
- CAS不启用HTTPS
- 启用MySQL查询缓存
- 启用mysql查询缓存
- hadoop, hive 启用LZO压缩
- Hive优化---启用local模式
- 关于oracle后台启用的schedule job
- linux 词典安装,有道
- tomcat项目中Date获取时间不对
- oracle 11g x64在WIN7 64位旗舰版 安装(york测试通过2013-12-19)
- Java中的重载、覆盖和隐藏
- 关于程序员的59条搞笑但却真实无比的编程语录
- Hive:简单查询不启用Mapreduce job而启用Fetch task
- httpclient
- 做人做事,大方讲究,讲诚信
- SAP Penetration Testing Using Metasploit Final
- wince GPRS 学习
- JIRA 一些学习资料
- 银行跨界电商会面临什么样的情况?
- 在Windows 7 上为VS2012编译boost 1.55 64位库
- VS2012中QT资源文件qrc加载失败(Q_INIT_RESOURCE报错)