前面講過很多函式,今天就說下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...