1. 程式人生 > >UDF開發以及如何新增到HIVE中

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;

注意:在哪個資料庫中註冊的永久函式,必須在哪個資料庫下將該方法刪除。