美文网首页
Hive实现自定义函数(临时函数和永久函数)

Hive实现自定义函数(临时函数和永久函数)

作者: Yobhel | 来源:发表于2020-06-16 15:23 被阅读0次

    关于HIVE实现自定义函数,步骤主要可分为:

    • 继承org.apache.hadoop.hive.ql.exec.UDF
    • 重写evaluate()方法
    • 打包jar
    • 添加jar包
    • 使用自定义函数

    下面是具体实现,包括自定义临时函数和自定义永久函数

    编写自定义函数

    public class AddPrefix extends UDF {
        /**
         * 这里我们实现将任一输入添加自定义前缀信息
         */
        public String evaluate(String str) {
            return "HIVE UDF Prefix:"+ str;
        }
    } 
    

    打包jar,进入HIVE客户端,引入相关jar包

    • 这里以自定义临时函数为例
    --添加jar包
    hive> add jar /usr/wh/addPrefix.jar;
    --创建自定义临时函数
    hive> create temporary function add_prefix as 'com.test.AddPrefix';
    --使用自定义临时函数
    hive> select add_prefix('aa');
    HIVE UDF Prefix:aa
    hive> select add_prefix(1);
    HIVE UDF Prefix:1
    --这里我们切换数据库依然可以正常使用。为了便于观察,我们打开数据库显示。
    hive> set hive.cli.print.current.db=true;
    hive (test)> select add_prefix('aa');
    HIVE UDF Prefix:aa
    hive (test)> use tmp;
    hive (tmp)> select add_prefix('aa');
    HIVE UDF Prefix:aa
    --销毁自定义临时函数
    hive (test)> drop temporary function add_prefix;
    --需要注意的是,一旦退出HIVE客户端,自定义临时函数即被销毁。
    
    • 如果需要使用自定义永久函数,可以先上传到HDFS。
    [root@nd2 wh]# hadoop fs -put addPrefix.jar /wh/test/
    [root@nd2 wh]# hadoop fs -ls /wh/test
    Found 1 items
    -rw-r--r--   3 root supergroup        699 2019-05-22 14:03 /wh/test/addPrefix.jar
    
    • 下面是简单使用
    --创建永久函数
    create function add_prefix
    as 'com.test.AddPrefix'
    using jar 'hdfs:///wh/test/addPrefix.jar'
    --与自定义临时函数不同,使用永久函数只能在当前数据库
    --这里我们放在test库,如果在其它库执行,会报错
    hive (test)> select add_prefix('aa');
    HIVE UDF Prefix:aa
    hive> use tmp;
    hive (tmp)> select add_prefix('aa');
    FAILED: SemanticException [Error 10011]: Invalid function add_prefix
    --销毁自定义永久函数
    hive (test)> drop function add_prefix;
    

    相关文章

      网友评论

          本文标题:Hive实现自定义函数(临时函数和永久函数)

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