美文网首页
Hive自定义UDF函数实现

Hive自定义UDF函数实现

作者: 社会我大爷 | 来源:发表于2022-03-08 16:57 被阅读0次

1、UDF定义

UDF:User-Defined-Function 自定义函数 、一进一出;

2、背景

  • 系统内置函数无法解决实际的业务问题,需要开发者自己编写函数实现自身的业务实现诉求。

  • 应用场景非常多,面临的业务不同导致个性化实现很多,故udf很需要。

  • 意义

    • 函数扩展得到解决,极大丰富了可定制化的业务需求。
    • IO要求-要解决的问题
      • in:out=1:1,只能输入一条记录当中的数据,同时返回一条处理结果。
      • 属于最常见的自定义函数,像cos,sin,substring,indexof等均是如此要求

    3、实现步骤

    • 自定义一个java类
    • 继承UDF类
    • 重写evaluate方法
    • 打包类所在项目成一个all-in-one的jar包并上传到hive所在机器
    • 在hive中执行add jar操作,将jar加载到classpath中。
    • 在hive中创建模板函数,使得后边可以使用该函数名称调用实际的udf函数
    • hive sql中像调用系统函数一样使用udf函数

    4、代码实现示例

    • 功能要求:实现当输入字符串超过2个字符的时候,多余的字符以”…”来表示。
    • 如“12”则返回“12”,如“123”返回“12…”
    • 自定义类、继承UDF、重写evaluate方法已在代码中体现

    依赖包:

    compileOnly('org.apache.hive:hive-exec:1.1.0-cdh5.14.0')
    

    核心实现代码:

    import org.apache.hadoop.hive.ql.exec.UDF;
    /*
     * 功能:实现当输入字符串超过2个字符的时候,多余的字符以"..."来表示。
     * 输入/输出:* 如“12”则返回“12”,如“123”返回“12..."
     */
    public class ValueMaskUDF extends UDF{
           public String evaluate(String input,int maxSaveStringLength,String replaceSign) {
                 if(input.length()<=maxSaveStringLength){
                        return input;
                 }
                 return input.substring(0,maxSaveStringLength)+replaceSign;
           }
           public static void main(String[] args) {
                 System.out.println(new ValueMaskUDF().evaluate("河北省",2,"..."));;
           }
    }
    

    5、永久添加 UDF

    不能是本地 jar 包,需要上传 jar 包到 hdfs 目录中:

hadoop fs -put hive-udf-1.0-SNAPSHOT.jar /user/hive/jars

然后进入 hive 中,创建函数:

hive> create function myCount as 'cn.com.xxx.udf.ValueMaskUDF' using jar 'hdfs:/user/hive/jars/hive-udf-1.0-SNAPSHOT.jar';
OK

6、参考资料

1.《Hive 编程指南》

相关文章

  • 学习中的关键的问题

    hive中的topn操作需要使用到hive的窗口函数执行操作的。 spark的udf可以实现自定义的udf的函数的...

  • Hive 自定义函数 UDF

    Hive 自定义函数 UDF UDF:用户定义(普通)函数,只对单行数值产生作用; UDF只能实现一进一出的操作。

  • Hive从入门到精通8:Hive自定义函数(UDF)

    1.什么是Hive UDF? Hive中的用户自定义函数(即User Defined Function,简称UDF...

  • Hive- UDF&GenericUDF

    hive udf简介 在Hive中,用户可以自定义一些函数,用于扩展HiveQL的功能,而这类函数叫做UDF(用户...

  • 【Hive】Hive UDF

    [TOC] 一、UDF 介绍 UDF(User-Defined Functions)即是用户自定义的hive函数。...

  • Hive 用户自定义函数 UDF,UDAF

    Hive有UDF:(普通)UDF,用户自定义聚合函数(UDAF)以及用户自定义生表函数(UDTF)。它们所接受的输...

  • Hive的UDF编程-GenericUDF编程

    UDF简介 在Hive中,用户可以自定义一些函数,用于扩展HiveQL的功能,而这类函数叫做UDF(用户自定义函数...

  • Hive开发自定义函数UDF

    Hive 内置函数 Hive自定义函数 UDF(User-Defined-Function) 一进一出 UDAF(...

  • Hive自定义函数-UDF

    虽然Hive提供了很多函数,但是在实际工作还是需要根据工作的业务需求实现自己的自定义函数,这就是自定义函数(UDF...

  • hive积累大全

    此篇内容:hive自定义函数UDF、UDTF,压缩存储方式,hive优化、hive实际编程SQL中的if表达式用法...

网友评论

      本文标题:Hive自定义UDF函数实现

      本文链接:https://www.haomeiwen.com/subject/kzbarrtx.html