hive关于fetch.task优化

hql默认是需要转成mapreduce任务去执行的,但是一些场景启动mapreduce,比较消耗资源而且时间很慢,所以hive对于查询做了优化,有些查询是可以不启动mapredce去执行的,即按照fetch task 的方式去执行,实际上就是单进程的文件处理,输出结果

在hive-site.xml中有三个fetch task相关的值,也可以在客户端直接执行 set …

hive.fetch.task.conversion
hive.fetch.task.conversion.threshold #在输入大小为多少以内的时候fetch task生效,默认1073741824 byte = 1G
hive.fetch.task.aggr #对于没有group by的聚合查询,比如select count(*) from tab,这种最终都会在一个reduce中执行,像这种查询,可以把这个置为true将将其转换为fetch task,这可能会节约一些时间。

hive.fetch.task.conversion
这个属性有三个可选的值:
none:关闭fetch task优化
minimal:只在select 、使用分区列过滤、带有limit的语句上进行优化
more:在minimal的基础上更加强大了,select不仅仅可以是
,还可以单独选择几列,并且filter也不再局限于分区字段,同时支持虚拟列(别名)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值