Hive實現UDF自定義函式

2021-10-07 08:02:23 字數 2158 閱讀 3387

前面講過很多函式,今天就說下udf自定義函式

編寫udf有兩種方式

1.繼承 udf , 重寫evaluate方法

2.繼承 genericudf,重寫initialize、getdisplaystring、evaluate方法

org.apache.hadoop<

/groupid>

hadoop-common<

/artifactid>

2.6.0

<

/version>

<

/dependency>

org.apache.hive<

/groupid>

hive-exec<

/artifactid>

1.1.0

<

/version>

<

/dependency>

建立類繼承udf並重寫evaluate方法

public

class

myfunc

extends

udfelse

}return

newtext

("male"

+male+

",female"

+female);}

}

導成瘦包放到linux的 opt目錄下,準備上傳到hdfs

建資料夾

hdfs dfs -mkdir /func;

上傳到hdfs

!hdfs dfs -put /opt/myfun.jar /func;

從hdfs中載入jar包

add jar hdfs:

ip是hadoop中core-site.xml中配置的hdfs路徑

想永久上傳jar包的話就不用add

直接建立函式,名稱自己定義並載入

create function mytest as 「com.demo.hive.myfunc」 using jar 「hdfs:/func/myfun.jar」;

重啟hive

解析

create function mytest 建立自定義函式

com.demo.hive.myfunc 繼承udf的類的路徑

hdfs:/func/myfun.jar 上傳到hdfs的jar包路徑

呼叫自定義函式

select mytest(male) from userinfos;

刪除自定義函式函式

drop function mytest;

第二種方式:

繼承org.apache.hadoop.hive.ql.udf.generic.genericudf之後,

需要重寫幾個重要的方法:

public void configure(mapredcontext context) {}

//可選,該方法中可以通過context.getjobconf()獲取job執行時候的configuration;

//可以通過configuration傳遞引數值

public objectinspector initialize(objectinspector arguments)

//必選,該方法用於函式初始化操作,並定義函式的返回值型別;

//比如,在該方法中可以初始化物件例項,初始化資料庫鏈結,初始化讀取檔案等;

public object evaluate(deferredobject args){}

//必選,函式處理的核心方法,用途和udf中的evaluate一樣;

public string getdisplaystring(string children)

//必選,顯示函式的幫助資訊

public void close(){}

//可選,map完成後,執行關閉操作

hive自定義函式UDF

hive自定義函式 udf 可以幫助使用者輕鬆實現在hql語句中展現自定義查詢結果。這裡以乙個簡單的連線函式來實現使用者自定義函式,假設表結構如下 表中只有兩個簡單的字段,id和name。這裡實現乙個將id和name用 連線的函式,最後輸出結果。第一步 書寫stringjoin類,繼承udf,實現名...

hive自定義函式 UDF

幾個命令 檢視所有函式 hive show functions 檢視函式的使用方法 hive desc function 函式名 兩數和 addudf 自定義hive函式 description name myadd value myadd int a int b return a b extend...

hive自定義udf函式

在建立自定義函式時,需要將jar包全部部署到hive server節點的所有機器的使用者定義的udf引數目錄 hive.reloadable.aux.jars.path.jars.path.property property value usr lib hive lib value 呼叫 impor...