1. 程式人生 > >Hive快捷查詢:不啟用Mapreduce job啟用Fetch task三種方式介紹

Hive快捷查詢:不啟用Mapreduce job啟用Fetch task三種方式介紹

should ima only cts 直接 mapr 問題 rom conf

如果查詢表的某一列,Hive中默認會啟用MapReduce job來完成這個任務,如下:

hive>select id,name from m limit 10;--執行時hive會啟用MapReduce job

我們都知道,啟用MapReduce Job是會消耗系統開銷的。對於這個問題,從Hive0.10.0版本開始,對於簡單的不需要聚合的類似

SELECT <col> from <table> LIMIT n語句,不需要起MapReduce job,直接通過Fetch task獲取數據,可以通過下面幾種方法實現:

方法一:

hive>set hive.fetch.task.conversion=more;--開啟fetch任務,就不啟用MapReduce job;

hive>select id,name from m limit 10;

方法二:

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

方法三:

上面的兩種方法都可以開啟了Fetch任務,但是都是臨時起作用的;如果你想一直啟用這個功能,可以在${HIVE_HOME}/conf/hive-site.xml裏面加入以下配置:

<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>

Hive快捷查詢:不啟用Mapreduce job啟用Fetch task三種方式介紹