hive需要引入包时?该怎么引入?
一、hive-site.xml中的hive.aux.jars.path
此配置项对于hive server有效,但是是不会作用到hive shell.也就是说即使你在hive节点上配置了这一项,但是对于hive shell来说是无效的(为什么会这样?难道不是服务器配置了,所有的hive shell都能生效吗?搞不懂)。但是在hive-site.xml的模板文件中找不到hive.aux.jars.path的配置,是不是hive正慢慢改变用户放弃配置此属性呢?
注意:1,目前只支持file://也就是本地文件,暂不支持HDFS,也不支持文件夹。2,多个文件使用逗号分隔。3,不能换行。
有类似hbase-0.94.15-cdh4.7.0.jar包时,可以使用如下配置:
<property> <name>hive.aux.jars.path</name> <value>file:///home/cdh/apps/hive-0.10.0-cdh4.7.0/lib/hive-hbase-handler-0.10.0-cdh4.7.0.jar,file:///home/cdh/apps/hive-0.10.0-cdh4.7.0/lib/hbase-0.94.15-cdh4.7.0.jar,file:///home/cdh/apps/hive-0.10.0-cdh4.7.0/lib/zookeeper-3.4.5-cdh4.7.0.jar,file:///home/cdh/apps/hive-0.10.0-cdh4.7.0/lib/antlr-runtime-3.4.jar</value> </property>
没有类似hbase-0.94.15-cdh4.7.0.jar包时,可以使用如下配置:
<property> <name>hive.aux.jars.path</name> <value>file:///home/hadoop/apps/hive-0.12.0-cdh5.1.0/lib/hive-hbase-handler-0.12.0-cdh5.1.0.jar,file:///home/hadoop/apps/hive-0.12.0-cdh5.1.0/lib/hbase-client-0.98.1-cdh5.1.0.jar,file:///home/hadoop/apps/hive-0.12.0-cdh5.1.0/lib/hbase-common-0.98.1-cdh5.1.0.jar,file:///home/hadoop/apps/hive-0.12.0-cdh5.1.0/lib/zookeeper-3.4.5-cdh5.1.0.jar</value> </property>
二、hive-env.sh中的HIVE.AUX.JARS.PATH
hive-env.sh中的HIVE.AUX.JARS.PATH对服务器无效,仅对当前hive shell有效,不同的hive shell相互不影响,每个hive shell都需要配置,可以配置成文件夹形式。
注意:1,根据hive启动脚本,此属性应该也只支持file://也就是本地文件,暂不支持HDFS,没有做验证。2,此配置可以配置文件,也可以配置成文件夹,建议配置成文件夹。
可以使用如下配置:
export HIVE_AUX_JARS_PATH=$HIVE_HOME/lib
三、使用add jar
使用add jar应该也对服务器无效,仅对当前hive shell有效(没验证过),add jar 建议制定一个HDFS路径,jar包上传到HDFS上,这样比较方便。如果指定是本地路径,则需要确保每个hive shell节点上的对应位置上都放置了需要的jar包,这样操作起来比较麻烦。
可以使用如下命令:
add jar hdfs://hadoop01:9000/user/hive/share/HiveUdf.jar; delete jar hdfs://hadoop01:9000/user/hadoop/share/HiveUdf.jar;