UDF:
1-开发udf程序:继承UDF类,实现一个或者多个evaluate方法
2-打成jar包
3-上传jar包到集群中,并添加到hive的环境变量中,在hive中执行
add jar /export/datas/udf.jar;
4-创建临时函数:
create temporary function transDate as 'cn.itcast.bigdata.hive.TransDate';
5-测试函数:
select transDate("18/Aug/2019:12:30:05");
6-删除临时函数
DROP TEMPORARY FUNCTION transDate;
UDTF
1-开发udtf程序:继承UDTF类,重写process方法
2-打成jar包
3-上传jar包到集群中,并添加到hive的环境变量中,在hive中执行
add jar /export/datas/udtf.jar;
4-创建临时函数:
create temporary function transMap as 'cn.itcast.bigdata.hive.UserUDTF';
5-测试函数:
第一种用法:直接调用
select transMap("uuid=root&url=www.taobao.com") as (userCol1,userCol2);
第二种用法:和侧视图一起使用
select deptno,deptname,a.* from tb_dept lateral view transMap("uuid=root&url=www.taobao.com") a as col1,col2;
注意:
1-udtf只能直接select中使用
2-不可以添加其他字段使用
3-不可以嵌套调用
4-不可以和group by/cluster by/distribute by/sort by一起使用
UDAF
1-开发udaf程序:继承UDAF类,重写iterate方法
2-打成jar包
3-上传jar包到集群中,并添加到hive的环境变量中,在hive中执行
add jar /export/datas/udaf.jar;
4-创建临时函数:
create temporary function userMax as 'cn.itcast.bigdata.hive.UserUDAF';
5-测试函数:
select userMax(deptno) from tb_dept;