个人整理的hive函数使用方法,欢迎大家补充
一、内置函数
(1)日期函数
from_unixtime(bigint unixtime[, string format]) --将时间戳转成date
unix_timestamp() --获取当前时间的时间戳
(2)条件函数
if(boolean testCondition, T valueTrue, T valueFalseOrNull)
--如果value非空就返回value,否则就返回default_value
nvl(T value, T default_value)
--类似于Java中的switch语句
select ename,sex,
case
when sex='female' then 1
when sex='male' then 0
else -1
end as sexid
from t_emp;
(3)String Functions 字符串函数
ascii(string str)
concat(string|binary A, string|binary B...)
concat_ws(string SEP, string A, string B...) 以SEP作为分隔符拼接string
(4)Misc. Functions 加密函数
hash(a1[, a2...])
current_user() 返回当前的用户名
current_database() 返回当前所在的数据库
(5)类型转换函数 Type Conversion Functions
cast(expr as <type>)
(6)集合函数
array_contains(Array<T>, value)
(7)数学函数
--round 表示"四舍五入",算法为Math.floor(x+0.5) ,即将原来的数字加上 0.5 后再向下取整,所以 Math.round(11.5) 的结果为 12,Math.round(-11.5) 的结果为 -11。
round(DOUBLE a, INT d) --d表示小数位数,最后一位0是不显示的
二、自定义函数
1、Built-in Table-Generating Functions (UDTF) 表生成函数
普通的UDF,如concat(),接受单个输入行并输出单个输出行。相反,表生成函数UDTF将单个输入行转换为多个输出行。(一对多)
Lateral View
--LateralView与UDTF一起使用。正如在UDTF中提到的,UDTF为每个输入行生成零个或多个输出行。LateralView首先将UDTF应用于基表的每一行,然后将产生的输出行连接到输入行,形成一个具有提供的表别名的虚拟表。
select id,name,col
from t_subject
lateral view explode(subject) t1;
UDTF有两种使用方法,一种直接放到select后面,一种和lateral view一起使用。
2、User-Defined Functions:UDF 用户自定义函数
进去一个数据 出来一个数据 (一对一)
hive自定义UDF函数的方法
3、User-Defined Aggregate Functions (UDAF) 用户定义聚合函数
多进一出
自定义UDAF函数