Hive如何添加第三方JAR


以加入elsaticsearch-hadoop-2.1.2.jar為例,講述在Hive中加入第三方jar的幾種方式。

1,在hive shell中加入

[java]  view plain  copy
 
  1. [hadoop@hadoopcluster78 bin]$ ./hive  
  2.   
  3. Logging initialized using configuration in file:/home/hadoop/apache/hive-0.13.1/conf/hive-log4j.properties  
  4. hive> add jar /home/hadoop/elasticsearch-hadoop-hive-2.1.2.jar;                        //elasticsearch-hadoop-hive-2.1.2.jar放在本地文件系統的/home/hadoop目錄。  
  5. Added /home/hadoop/elasticsearch-hadoop-hive-2.1.2.jar to class path  
  6. 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配置對服務器無效,僅對當前hive shell有效,不同的hive shell相互不影響,每個hive shell都需要配置,可以配置成文件夾形式。

HIVE.AUX.JARS.PATH和hive.aux.jars.path僅支持本地文件。可配置成文件,也可配置為文件夾。

在${HIVE_HOME}/conf/hive-env.sh下配置:
[java]  view plain  copy
 
  1. 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下配置:
[java]  view plain  copy
 
  1. <property>  
  2.     <name>hive.aux.jars.path</name>  
  3.     <value>/home/hadoop/elasticsearch-hadoop-hive-2.1.2.jar</value>  
  4. </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是可以起作用的,但是試過很多次都沒用,百思不得其姐,期待大神答疑。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM