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