微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何永久自定义hive函数

这篇文章主要为大家展示了“如何永久自定义hive函数”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何永久自定义hive函数”这篇文章吧。

永久自定义hive函数

1:做这件事的原因:

有一些函数是比较基础的,公用的,每次都要create temporary function麻烦了,这样的基础函数需要直接集成到hive中去,避免每次都要创建。

2:步骤

本人拥有一个账户zb_test

自定义函数已经准备好

如何永久自定义hive函数


 

登陆linux账户,修改该账户的home目录下的.bashrc文件

把CLAsspATH改成如下:

export CLAsspATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$SQOOP_HOME/lib:/opt/boh-2.0.0/hadoop/share/hadoop/

tools/lib/*:/opt/boh-2.0.0/hadoop/share/hadoop/common/lib/*:/opt/boh-2.0.0/hadoop/share/hadoop/common/*:/opt/boh-2.0.0/hive/li

b/*:$CLAsspATH(目的是自己编译的时候要用到)

获取hive-0.12.0-cdh6.0.0-src.tar.gz的源代码

解压,找到hive-exec-0.12.0-cdh6.0.0.jar包(hive函数跟这个有关),再解压。

jar -xvf XXX.jar

编译自定义函数的java文件,比如放在utf下

Javac ./utf/*

产生.class文件,放到abc目录下。

把.class文件打成jar包

Jar -cvf ./hello.jar ./abc/*

产生一个jar包,叫hello.jar

jar包放到/data/zb_test/目录下

然后修改/data/zb_test/.bashrc文件的:

export CLAsspATH=/data/zb_test/hello.jar:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$SQOOP_HOME/lib:/opt/boh-2.0.0/hadoop/share/hadoop/tools/lib/*:/opt/boh-2.0.0/hadoop/share/hadoop/common/lib/*:/opt/boh-2.0.0/hadoop/share/hadoop/common/*:/opt/boh-2.0.0/hive/lib/*:$CLAsspATH(为了测试用的)

函数test注册到hive的函数列表中
修改$HIVE_HOME/src/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java文件
import org.apache.hadoop.hive.ql.udf.UDFTest;

registerUDF(“test”, UDFTest.class,false);

重要步骤:

1:把刚刚产生的所有的.class文件都放到修改$HIVE_HOME/src/ql/src/java/org/apache/hadoop/hive/ql/udf下面

2:然后编译FunctionRegistry.java文件:编译通过以后,我们找到hive-exec-0.12.0-cdh6.0.0.jar里面的$HIVE_HOME/src/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.class文件,我们把替换了。

这些路径都是在hive-exec-0.12.0-cdh6.0.0.jar解压后的org的路径下的。

其实把这两个步骤做了以后,重新把刚刚解压的hive-exec-0.12.0-cdh6.0.0.jar打成jar包,替换了hive里的,就可以了。

以上是“如何永久自定义hive函数”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程之家行业资讯频道!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐