Hive其他优化

一、关联优化器

在Hive的一些复杂关联查询中,可能同时还包含有group by等能够触发shuffle的操作,有些时候shuffle操作是可以共享的,通过关联优化器选项,可以尽量减少复杂查询中的shuffle,从而提升性能

set hive.optimize.correlation=true;

二、Hive并行执行

Hive会将一个查询转化为一个或多个阶段,包括:MapReduce阶段、抽样阶段、合并 阶段、limit阶段等。默认情况下,一次只执行一个阶段。不过,如果某些阶段不是互相依赖,是可以并行执行的。

-- 开启并发执行,默认为false
set hive.exec.parallel=true;
-- 同一个sql允许的最大并行度,默认为8
set hive.exec.parallel.thread.number=16;

三、Hive小文件合并

-- 是否开启合并Map端小文件,在Map-only的任务结束时合并小文件,true是打开
hive.merge.mapfiles
-- 是否开启合并Reduce端小文件,在map-reduce作业结束时合并小文件,true是打开
hive.merge.mapredfiles
-- 合并后MR输出文件的大小,默认为256M
hive.merge.size.per.task
-- 当输出文件的平均大小小于此设置值时,启动一个独立的map-reduce任务进行文件merge,默认值为16M。
hive.merge.smallfiles.avgsize

在这里插入图片描述

四、矢量化查询

hive的默认查询引擎一次处理一行,而矢量化查询执行是一种hive特性,目的是按照每批1024行读取数据,并且一次行对整个记录整合(而不是对单条记录)应用操作,注意:要是用矢量化查询执行,就必须以ORC格式存储数据

set hive.vectorized.execution.enabled=true;
set hive.vectorized.execution.reduce.enabled=true;

五、读取零拷贝

ORC可以使用新的HDFS缓存API和ZeroCopy读取器来避免在扫描文件时将额外的数据赋值到内存中

set hive.exec.orc.zerocopy=true;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值