Hive-函数(二)自定义UDF函数开发案例


Hive-函数(二)自定义UDF函数开发案例

1.创建一个java工程

 

 

 

 

 

 

 

 

 

 2.Settings找到自己的Maven

 

 

 

3.pom.xml配置文件

接着将之前项目中配好的pom.xml配置内容复制过来--》自动加载(右下角的小标签中的第一个)

4.加载hive的依赖

1)百度上搜maven--》进入官网 https://mvnrepository.com/search?q=Maven

2)搜Maven--》选左侧栏中的org.apache--》点进第一个Hive Query Language

 

 

 

3)选择1.2.1版本的:

 

4)复制这个依赖到pom.xml文件里:

 

5.代码实现自定义-UDF函数

1)创建包、一个类--》自写代码:

package hive;

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

public class UDF_Lower extends UDF {
    public String evaluate(final String s){
        if(s==null){
            return null;
        }
        return s.toLowerCase();
    }

}

2)通过Maven打成jar包:clean--》package

上传到/opt/module/hive-1.2.1/lib目录下

3)加载自定义函数

(1)加载上临时函数的jar包

hive (default)> add jar /opt/module/hive-1.2.1/lib/hive-1.0-SNAPSHOT.jar;

Added [/opt/module/hive-1.2.1/lib/hive-1.0-SNAPSHOT.jar] to class path

Added resources: [/opt/module/hive-1.2.1/lib/hive-1.0-SNAPSHOT.jar]

(2)创建临时函数-与开发好的java class关联(全类名)

这里的全类名就是:右键自定义的类--》选择Copy Reference--》粘贴上

hive (default)> create temporary function udf_lower as "hive.UDF_Lower";

4)即可在hql中使用自定义的函数strip 

hive (default)> select ename, udf_lower(ename) lowername from emp;

解释: select ename `大写`, udf_lower(ename) `小写` from emp;

比如在/opt/module/hiveTest/目录下先创建一个文件stu1,里面内容是:

JAVA

LINUX

Hadoop

hdfs

MR

Yarn

ZOOKeeper

Flume

Hive

然后再创建一个表-stu1:

hive (default)> create table stu1

              > (name string)

              > row format delimited fields terminated by '\t';

接着加载数据到stu1表中:

hive (default)> load data local inpath '/opt/module/hiveTest/stu1' into table stu1;

接着使用自定义函数:

hive (default)> select name,udf_lower(name) lowername from stu1;

OK

name lowername

JAVA   java

LINUX  linux

Hadoop   hadoop

hdfs    hdfs

MR    mr

Yarn    yarn

ZOOKeeper   zookeeper

Flume   flume

Hive    hive

Time taken: 0.31 seconds, Fetched: 9 row(s)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM