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' ;

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

测试2开启:

 set hive.vectorized.execution.enabled=true;

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

结论

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

上一篇:求100以内偶数之和


下一篇:12、XCTF command_execution