hive 窗口函数简介(udf\udaf\udtf)

内置函数

show functions;

desc function extended f_name;

hive内置函数

1.1对1 (UDF) eg:

select lcase("ABc");==>abc

2.多对一(UDAF) max、  min、avg 、sum、count 、distinct eg:

select department,avg(salary) from dept;

3.一对多 (UDTF) eg:explode

select explode(split("a-b-c-d","-"));  ==>
a
b
c
d

str_to_map(text,delimiter1,delimiter2)

select tstr_to_map("a:1,b:2,c:3",",",":")==>{"a":"1","b":"2","c":"3"}

select explode(str_to_map("a:1,b:2,c:3",",",":")); ==>
a  1
b  2
c  3

hive 自定义函数

hive 查看内置自定义函数:  list jars

举例一个简单的自定义函数:

 
Package com.naixue.hive.udf
import java.util.HashMap;
import org.apache.hadoop.hive.ql.exec.UDF;
/**
* 自定义一对一实现的函数
*/
public class ToLowerCase extends UDF {
// 必须是public,并且evaluate方法可以重载
public String evaluate(String field) {
String result = field.toLowerCase();
return result;
}
// 根据传入的不同参数,可以执行对应的不同逻辑的方法
public int evaluate(int a, int b) {
return a + b;
}
}

上传jar包到hive环境即可试用

将导出的hiveudf.jar复制到hdfs上

hadoop fs -copyFromLocal hiveudf.jar hiveudf.jar

进入hive,添加jar,

add jar hdfs://localhost:9000/user/root/tolowercase .jar

create temporary function tolowercase as 'com.naixue.hive.udf.ToLowerCase';      
上一篇:Hive-编写UDTF函数一进多出(详细教程~~~)


下一篇:UDF?UDAF?UDTF?看了你就明白!