Fetch抓取机制:在执行SQL的时候,能不走mr就不走mr,尽量直接去操作数据文件。
参数设置:hive.fetch.task.conversion= more。
通常情况下,全局查找,字段查找,limit查找都不走mr程序。
--在下述3种情况下 sql不走mr程序
--全局查找
select * from student;
--字段查找
select num,name from student;
--limit 查找
select num,name from student limit 2;
mr本地模式:如果非要执行mr,能够执行本地的就不要提交yarn执行,默认是关闭的,意味着只要走mr就提交到yarn。
参数设置为:
mapreduce.framework.name = local 本地模式
mapreduce.framework.name = yarn 集群模式
hive提供了一个参数,自动切换mr程序为本地模式,如果不满条件,就执行yarn模式。
set hive.exec.mode.local.auto = true;
--3个条件必须都满足 自动切换本地模式
The total input size of the job is lower than: hive.exec.mode.local.auto.inputbytes.max (128MB by default) --数据量小于128M
The total number of map-tasks is less than: hive.exec.mode.local.auto.tasks.max (4 by default) --maptask个数少于4个
The total number of reduce tasks required is 1 or 0. --reducetask个数是0 或者 1