具体用法
关闭向量化执行引擎:
set hive.vectorized.execution.enabled = false;
–开启向量化查询开关
set hive.vectorized.execution.enabled=true;select s_age, max(s_desc) num from student_tb_orc group by s_age;
开启hive.vectorized.execution.enabled操作,默认是关闭状态,将一个普通的查询转化为向量化查询执行是一个Hive 特性。它大大减少了扫描、过滤器、聚合和连接等典型查询操作的CPU 使用。标准查询执行系统一次处理一行。矢量化查询执行可以一次性处理1024行的数据块,以减少底层操作系统处理数据时的指令和上下文切换
什么是向量化查询执行
在标准的查询执行系统中,每次只处理一行数据,每次处理都要走过较长的代码路径和元数据解释,从而导致CPU使用率非常低。
而在向量化查询执行中,每次处理包含多行记录的一批数据,每一批数据中的每一列都会被存储为一个向量(一个原始数据类型的数组),这就极大地减少了执行过程中的方法调用、反序列化和不必要的if-else操作,大大减少CPU的使用时间。
如下图所示: