自定義開發案例
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;
注意:在哪個數據庫中註冊的永久函數,必須在哪個數據庫下將該方法刪除。