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...