UDF開發以及如何新增到HIVE中
自定義開發案例
1)建立一個java工程,並建立一個lib資料夾
2)將hive的jar包解壓後,將apache-hive-1.2.2-bin\lib檔案下的jar包都拷貝到java工程中。
3)建立一個類
package com.lzl.hive; import org.apache.hadoop.hive.ql.exec.UDF; public class Lower extends UDF { public String evaluate(final String s) { if (s == null) { return null; } return s.toString().toLowerCase(); } } |
4)打成jar包上傳到伺服器/opt/module/jars/udf.jar
5)將jar包新增到hive的classpath
hive (default)> add jar /opt/module/jars/udf.jar;
6)建立臨時函式與開發好的java class關聯
hive (default)> create temporary function my_lower as "com.lzl.hive.Lower";
7)即可在hql中使用自定義的函式strip
hive (default)> select ename, my_lower(ename) lowername from emp;
匯入HIVE方式
臨時新增 jar 包
hive (default)> add jar /opt/module/jars/udf.jar;
永久新增 jar 包
在 hive-site.xml 檔案中新增:
<property> <name>hive.aux.jars.path</name> <value>file:///opt/module/hive/lib/json-serde-1.3.8-jar-with-dependencies.jar,file:///opt/module/jar/udf.jar</value> </property> |
永久註冊
hive (default)>create function getdaybegin AS 'com.lzl.hive.Lower';
刪除函式
hive (default)>drop function getdaybegin;
注意:在哪個資料庫中註冊的永久函式,必須在哪個資料庫下將該方法刪除。