hive中建立udf函式及遇到的坑

2021-10-23 09:37:03 字數 1648 閱讀 1069

udf開發 自定義標準函式:

自定義函式步驟:

第一步:整合udf類,重寫evaluate方法**換為小寫字母)

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

import org.apache.hadoop.io.text;

public

class

str2lower

extends

udfreturn

newtext

(s.tostring()

.tolowercase()

);}}

第二步:打jar包,上傳到集群

idea中如何正確快速打jar包

第三步:在hive中新增jar包

add jar /root/jars/hadooplearn-

1.0-snapshot.jar;

第四步:建立函式

create [temporary] function str2lower2 as 'cn.kgc.hiveudf.str2lower'

;

臨時函式:臨時建立,退出終端後函式消失,在函式的有效期內,所有的資料庫中都可以使用

永久函式:永久性使用,需要將jar包放到hdfs上,切換到其他的資料庫不可用

過程如下:

// 把打好的jar包上傳到hdfs上

hdfs dfs -mkdir /hiveudf

hdfs dfs -put hadooplearn-1.0-snapshot.jar /hiveudf

// 新增jar包
add jar hdfs:

//hadoop1:

9000

/hiveudf/hadooplearn-

1.0-snapshot.jar;

// 建立永久函式
create function str2lower2 as 'cn.kgc.hiveudf.str2lower'

;

第五步:測試(呼叫)函式

遇到的坑:找不到打jar包的類

解決方法:

1.安裝zip

yum install -y zip

2.刪除簽名檔案

zip -d jar包位址 『meta-inf/.sf』 『meta-inf/.rsa』 『meta-inf/*sf』

以上兩步是在linux中做的

下面是在hive中操作

3.刪除hive中的jar包

delete jar 自己放的jar包位址;

4.重新新增jar到hive中

add jar 自己放的jar包位址;

5.建立方法

create function str2lower2 as 『cn.kgc.hiveudf.str2lower』;

這個建立的方法名只能使用,不可以檢視

hive中的udf時間函式用法

1 from unixtime函式 用法為將時間戳轉換為時間格式 語法 from unixtime bigint unixtime string format 返回值為string 例如 hive select from unixtime 1326988805,yyyymmddhh from tes...

Hive 中自定義UDF函式

在hive中,編寫自定義udf函式,可以幫助我們更輕鬆的做etl。例如,現在我要求某一列資料的平方,在eclipse新建工程,並新建乙個test包,在test包下新建乙個類square public class square extends udf 然後將 打成jar包,如 test01.jar。然...

Hive部署UDF永久函式

1.將寫好的udf函式打包jar,並上傳到伺服器某個目錄。2.替換hdfs內jar包 使用命令先刪除 後上傳。hdfs dfs rm r udf datamask 1.0 snapshot jar with dependencies.jar hdfs dfs put home webserver j...