内置函数
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';