分享

hive中如何让addjar只执行一次

zhuqitian 发表于 2016-9-1 06:40:58 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 6 19361
在项目中有很多脚本调用的jar包和创建的临时函数都一样,我在想有什么操作或者设置让那些add jar,create temporary只执行一次,不然这么多次也浪费资源,而且每次都在集群中传输这么多次网络也浪费,耗时。还望大伙指点

已有(6)人评论

跳转到指定楼层
xingoo 发表于 2016-9-7 23:01:06
还有一种方法,可以直接反编译hive的源码,在源码中,把jar包的路径加载进去。详情参考《Hive编程指南》
回复

使用道具 举报

Gramer 发表于 2016-9-1 10:37:51
对于你的需求,有一种方式,就是创建永久函数,你把create temporary中的temporary去掉就好了。但是我不知道好不好。
回复

使用道具 举报

nextuser 发表于 2016-9-1 11:51:10
添加jar的方式有三种:楼主也可以尝试1楼和另外两种办法:
1.  使用add jar path/test.jar;方法加入

该方法的缺点是每次启动Hive的时候都要从新加入,退出hive就会失效。

2.  通过设置hive的配置文件hive-site.xml 加入

在配置文件中增加配置

<property>
<name>hive.aux.jars.path</name>
<value>file:///jarpath/all_new1.jar,file:///jarpath/all_new2.jar</value>
</property>

保存即可。

该方法比第一种方法方便很多。不需要每次启动Hive执行命令加入,只是配置稍微复杂一些。

3.  在${HIVE_HOME中创建文件夹auxlib  ,然后将自定义jar文件放入该文件夹中。

这种方法,方便快捷。


回复

使用道具 举报

zhuqitian 发表于 2016-9-5 16:54:33
nextuser 发表于 2016-9-1 11:51
添加jar的方式有三种:楼主也可以尝试1楼和另外两种办法:

这种方法一劳永逸,集群环境我没权限改的,在尝试用hive -i 解决,楼上那位兄弟说的创建永久函数还不错,我之前也有试过,不是session级的还不错
回复

使用道具 举报

zhuqitian 发表于 2016-9-5 16:55:24
Gramer 发表于 2016-9-1 10:37
对于你的需求,有一种方式,就是创建永久函数,你把create temporary中的temporary去掉就好了。但是我不知 ...

不错!
回复

使用道具 举报

zhuqitian 发表于 2016-9-8 09:04:12
xingoo 发表于 2016-9-7 23:01
还有一种方法,可以直接反编译hive的源码,在源码中,把jar包的路径加载进去。详情参考《Hive编程指南》

这种方法肯定最好不过了,把所有jar中的方法都注册到源码里,shou functions就能把方法show出来,我之前玩过,那本hive编程指南也看过一遍,很实用,不过在公司要改它源码编译后再给他,那边平台组那一关不一定能过的,权限不够。不过这个方法确实一劳永逸,赞!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条