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 函数名
上一篇下一篇

猜你喜欢

热点阅读