Hive什么情况下可以避免进行MapReduce?

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

1、本地模式下,hive可以简单的读取目录路径下的数据,然后输出格式化后的数据到控制台,比如有本地员工employee,当执行 select * from employee 时,直接将文件中数据格式化输出。
2、查询语句中的过滤条件只是分区字段的情况下不会进行Mapreduce。

设置:
在hive-site.xml里面有个配置参数叫

hive.fetch.task.conversion = more

将这个参数设置为more,简单查询就不走map/reduce了,设置为minimal,就任何简单select都会走map/reduce

1.当时用select * from tableName情况下,Hive可以简单的读取table对应的存储目录下的文件,然后输出格式化后的文件到控制台。对于在where条件中使用分区字段这种情况,也是无需MapReduce过程的,例如select * from tableName where partition1=‘’;无论使用limit语句限制记录条数。

2.如果属性hive.exec.mode.local.auto的值设置为true的话,Hive还会尝试使用本地模式执行其他的操作:

set hive.exec.mode.local.auto=true;

注意:最好是将set hive.exec.mode.local.auto=true这个设置增加到$HOME/.hiverc配置文件中

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值