Hive向量化使用规则
经常听到有开发人员抱怨开启了向量化,查询速度怎么还这么慢,其实Hive开启向量化并不是万能的,它需要同时满足以下两个条件才能发挥出效果。
1.表的存储类型
表存储的格式需要是Orc或者Parquet,简单的说就是列存储。
2.向量化支持的函数
以下是官网的关于支持向量化的函数,不在这里面的函数是不支持的。
arithmetic: +, -, *, /, %
AND, OR, NOT
comparisons <, >, <=, >=, =, !=, BETWEEN, IN ( list-of-constants ) as filters
Boolean-valued expressions (non-filters) using AND, OR, NOT, <, >, <=, >=, =, !=
IS [NOT] NULL
all math functions (SIN, LOG, etc.)
string functions SUBSTR, CONCAT, TRIM, LTRIM, RTRIM, LOWER, UPPER, LENGTH
type casts
Hive user-defined functions, including standard and generic UDFs
date functions (YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, UNIX_TIMESTAMP)
the IF conditional expression
所以只有满足以上两个条件,开启向量化才能达到一次处理1024行,而不是一次处理一行,速度才会快。