Hive实战系列调优之Map端向量模式

什么是向量模式

hive.vectorized.execution.enabled表示是否开启向量模式,默认为false,熟悉MapReduce编程的都知道Mapper类,在run()方法中map()方法逐行处理数据,这样操作容易产生更多的Cpu指令和Cpu上下文切换,这样会导致系统性能处理不高。那么有没有方式优化这个操作呢?答案当然有,采用批量的操作方式避免单行处理数据。Hive提供了向量的模式,将一次处理一条数据变为一次处理一万条数据来提高性能。

在hive提供的向量模式,并不是重写了Mapper函数,而是通过实现Inputformat接口,创建VertorizedOrcInputFormat类,来构建一个批量输入的数组。

计算引擎对向量模式支持

目前MapReduce计算引擎支支持Map端的向量化,Tez和Spark计算引擎可以支持Map和Reduce端的向量执行计划。

应用测试

开启向量命令:set hive.vectorized.execution.enabled=true;

测试1默认不开启:

select count(*) from dwd_level_info where  dt>='2021-05-01' and dt<='2021-05-31' ;

测试2开启:

 set hive.vectorized.execution.enabled=true;

结论

开启向量模式要比不开启向量模式时间减少10%左右。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值