hive创建自定函数UDF

hive创建自定函数UDF

1:创建maven工程 引入 hive-exec 依赖

 
            org.apache.hive</groupId>
            hive-exec</artifactId>
            1.2.1</version>
        </dependency>

2:创建自定义类,继承 UDF 实现 evaluate()方法:

package com.atguigu.hive;

import org.apache.hadoop.hive.ql.exec.UDF;

public class Text extends UDF {

    public int evaluate( int data ){
        return data+5;
    }

}

3:将 项目 打成jar包 放入服务器中,推荐放到hive安装目录的lib目录下
这样当重新运行hive 不必重新添加

hive (default)> add jar /opt/module/jar/hive-dome-1.0-SNAPSHOT.jar

4:创建 自定义函数:
语法:create [ temporary ] function [databasename.] functionname as ‘class_name’;

hive (default)> create function banzhang.addFive as 'com.atguigu.hive.Text';

[] 中的参数为可选项:
temporary :临时的 , 表示是临时函数还是永久函数
databasename:创建的数据库的名称
functionname: 自定义函数的名称
class_name:自定义函数的类的全路径 ,要加引号

5:测试:

hive (default)> add jar /opt/module/jar/hive-dome-1.0-SNAPSHOT.jar
              > ;
Added [/opt/module/jar/hive-dome-1.0-SNAPSHOT.jar] to class path
Added resources: [/opt/module/jar/hive-dome-1.0-SNAPSHOT.jar]
hive (default)> create temporary function addFive as 'com.atguigu.hive.Text';
OK
Time taken: 0.054 seconds
hive (default)> select addFive(id) from haha;
OK
_c0
6
7
8
9
10
11
Time taken: 0.651 seconds, Fetched: 6 row(s)
hive (default)> 

以上仅作为示例 代码,具体情况依照自身需要修改。

你可能感兴趣的:(hive,hadoop,hive,hadoop)