自定义开发案例
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;
注意:在哪个数据库中注册的永久函数,必须在哪个数据库下将该方法删除。