Hive之自定义函数
2019-06-12 本文已影响0人
学师大术
自定义函数是什么
当hive内置函数无法满足业务需求的时候,可以通过编写用户自定义函数来使用。
1、按照定义函数方式分类:
~ 普通用户函数UDF,操作单行数据行,
~ 用户自定义聚合函数UDAF,用于接受多行数据转换成一行
~ 用户定义表生产函数UDTF,用于输入单行数据,输出多行数据。
2、照使用方法分类:
~ 临时函数,只在当前会话有效。
~ 永久函数,可以在多个会话中使用。
如何实现UDF
1.编写普通UDF函数:
一个普通UDF必须继承自“org.apache.hadoop.hive.ql.exec.UDF”。
一个普通UDF必须至少实现一个evaluate()方法,evaluate函数支持重载。
2.代码实现:
import org.apache.hadoop.hive.ql.exec.UDF;
//1.继承UDF
public class CompareFeature extends UDF {
//实现evaluate
public Double evaluate(String feature1,String feature2){
try
{
/**
* 你的代码逻辑
*/
}catch(Exception e){
e.printStackTrace();
System.out.println("++++++"+e.getMessage());
}
System.out.println("-----"+feature1+"-----"+feature2);
return 3.d;
}
}
3.创建函数
1.创建临时函数:
//
CREATE TEMPORARY FUNCTION addDoubles AS 'Test1.CompareFeature' using jar 'hdfs://hacluster/tmp/HiveTest1.jar';
2.创建永久函数
CREATE FUNCTION addDoubles AS 'Test1.CompareFeature' using jar 'hdfs://hacluster/tmp/HiveTest1.jar';
验证查询效果:
SELECT addDoubles(1,2);
查看所有的function:
show functions
重新加载function:
reload function 函数名