Hive怎样加入第三方JAR

以增加elsaticsearch-hadoop-2.1.2.jar为例,讲述在Hive中增加第三方jar的几种方式。


1,在hive shell中增加

[hadoop@hadoopcluster78 bin]$ ./hive

Logging initialized using configuration in file:/home/hadoop/apache/hive-0.13.1/conf/hive-log4j.properties
hive> add jar /home/hadoop/elasticsearch-hadoop-hive-2.1.2.jar;                        //elasticsearch-hadoop-hive-2.1.2.jar放在本地文件系统的/home/hadoop文件夹。
Added /home/hadoop/elasticsearch-hadoop-hive-2.1.2.jar to class path
Added resource: /home/hadoop/elasticsearch-hadoop-hive-2.1.2.jar

连接方式
是否有效
Hive Shell
不须要重新启动Hive服务就有效
Hive Server
无效

2,Jar放入${HIVE_HOME}/auxlib文件夹

在${HIVE_HOME}中创建目录auxlib,然后将自己定义jar文件放入该目录中。


此方法加入不须要重新启动Hive。并且比較便捷。


连接方式
是否有效
Hive Shell
不须要重新启动Hive服务就有效
Hive Server
重新启动Hive服务才生效

3。HIVE.AUX.JARS.PATH和hive.aux.jars.path

hive-env.sh中的HIVE.AUX.JARS.PATH和hive-site.xml的hive.aux.jars.path配置对server无效,仅对当前hive shell有效。不同的hive shell相互不影响。每一个hive shell都须要配置,能够配置成目录形式。

HIVE.AUX.JARS.PATH和hive.aux.jars.path仅支持本地文件。可配置成文件,也可配置为目录。



在${HIVE_HOME}/conf/hive-env.sh下配置:

export HIVE_AUX_JARS_PATH=/home/hadoop/apache/hive-0.13.1/lib/mysql-connector-java-5.1.7-bin.jar #本地文件路径,不支持HDFS路径

类似的。能够在${HIVE_HOME}/conf/hive-site.xml下配置:
<property>
    <name>hive.aux.jars.path</name>
    <value>/home/hadoop/elasticsearch-hadoop-hive-2.1.2.jar</value>
</property>

连接方式
是否有效
Hive Shell
重新启动Hive服务才生效且不同的Hive Shell互不影响
Hive Server
无效

注:hive-env.sh中配置的HIVE_AUX_JARS_PATH和hive-site.xml配置hive.aux.jars.path參数会有冲突。在使用的时候要特别注意。




4。直接将Jar增加${HIVE_HOME}/lib文件夹

连接方式
是否有效
Hive Shell
重新启动Hive服务才生效
Hive Server
重新启动Hive服务才生效

总结:仅仅有第2种和第4种方式才干在Hive Server中起效。其它的在Hive Server中都无效,网上看了一些文章。都说hive-site.xml配置hive.aux.jars.path是能够起作用的,可是试过非常多次都没用。百思不得其姐。期待大神答疑。

原文地址:https://www.cnblogs.com/yangykaifa/p/7389677.html