内置函数介绍
- 查看 Hive 所有内置函数
show functions;
- Hive 测试函数的方法
# 通过常量值测试函数的使用
select substr("abcdefg",1,3);
- Hive 的所有函数手册
常用内置函数
类型转换函数
数学运算函数
- max:聚合函数(针对表所有数据或 group by 分组数据求最大值)
- min:聚合函数(针对表所有数据或 group by 分组数据求最小值)
字符串函数
时间函数
表生成函数
行转列函数:explode()
横向连接函数 lateral view
主要作用是将复合数据打散,转化为结构化数据,以便于做数据分析和统计
集合函数
-
array_contains:判断数组元素是否存在并返回 boolean 值
-
sort_array:返回排序后的数组
-
size:返回集合大小
-
map_keys:返回 Map 所有 key 值组成的数组
-
map_values:返回 Map 所有 value 值组成的数组
条件控制函数
-
case when
语法:
case [expression] when condition1 then result1 when condition2 then result2 ... else result end
-
if
json 解析函数
- json_tuple 函数
注:json_tuple 函数只能解析没有嵌套的 json 格式文件
- get_json_object 函数
注:get_json_object 函数可以解析任意 json 格式文件, 当遇到数组就用 [0,1,2...] 0,1,2是数组对应的元素,遇到jsonObject 直接用 ".key"取出想要获取的 value
row_number() over() 窗口分析函数:分组 TOPN
-
row_number() over() 函数属于分析函数,在做数据分析报表时经常使用
-
rank() over() 函数:与 row_number() over() 函数 功能类似
-
dense_rank() over() 函数:与 row_number() over() 函数 功能类似
sum() over() 窗口分析函数:逐行累加
rows 的条件:
- unbounded:*限
- preceding:从分区第一行头开始,则为 unbounded。 N: 为相对当前行向前的偏移量
- following :与 preceding 相反,到该分区结束,则为 unbounded。N:为相对当前行向后的偏移量
- current row:顾名思义,当前行,偏移量为 0
OVER() 开窗函数 可以使用的聚合函数 :COUNT、SUM、MIN、MAX、AVG
自定义函数
- 步骤一:写 Java 程序实现函数功能
- 步骤二:将 Java 程序打成 Jar 包上传到 Hive 所在主机上
- 步骤三:使用 Hive 命令将 Jar 包添加到 classpath 中
- 步骤四:使用 Hive 命令创建一个函数关联 Jar 包中的 Java 类