把之前的内容单独拿出来
https://blog.csdn.net/m0_49956154/article/details/134413180?spm=1001.2014.3001.5501
原生分类标准: 内置函数 和 用户定义函数(UDF,UDAF,UDTF)
分类标准扩大化: 本来,UDF 、UDAF、UDTF这3个标准是针对用户自定义函数分类的; 但是,现在可以将这个分类标准扩大到hive中所有的函数,包括内置函数和自定义函数;
目前hive三大标准
UDF:(User-Defined-Function)普通函数: 特点是一进一出(输入一行数据输出一行数据) 举例: split
UDAF:(User-Defined Aggregation Function)聚合函数: 特点是多进一出(输入多行输出一行) 举例: count sum max min avg
UDTF:(User-Defined Table-Generating Functions)表生成函数: 特点是一进多出(输入一行输出多行) 举例: explode
查询所有hive函数名称: show functions;
查看某函数使用帮助文档: desc function [extended] 函数名; 注意: 加上extended关键字能查看详细信息示例
-- 查看所有函数
show functions;-- 分类标准扩大化
-- UDF: 普通函数 特点: 一进一出 举例: split()
-- 查看官方示例
describe function extended split;
-- 演示官方示例
SELECT split('oneAtwoBthreeCfour', '[ABC]'); -- ["one","two","three","four"]-- UDAF: 聚合函数 特点: 多进一出 举例: sum() count() avg() max() min()
-- 查看官方示例
describe function extended count;
count(*): 不忽略null值统计个数
count(字段名): 忽略null值统计个数
count(常量): 举例 : count(1) count(2) ...
count(distinct 字段名): 忽略null值并且去重统计个数
-- UDTF: 表生成函数 特点: 一进多哦出 举例: explode()
-- 查看官方示例
describe function extended explode;
将数组a的元素分成多行,或将映射的元素分成多行和多列
数组: array[元素1,元素2,元素3...] array(10,20,30)能够构造出数组[10,20,30]
映射: map{k1:v1,k2:v2...} map('a',10,'b',20,'c',30)构造出映射{'a':10,'b':20,'c':30}
-- 演示炸裂函数
select explode(array(10,20,30));
select explode(map('a',10,'b',20,'c',30));