如何在hive中添加jar文件

问题描述 投票:0回答:5

我尝试使用 ADD JAR hive-contrib-0.10.0.jar 命令在配置单元中添加 hive-contrib-0.10.0.jar,但它总是说 hive-contrib-0.10.0.jar 不存在。

我现在使用的是 HDP 2.1 版本。我还使用hue将此jar文件添加到

/user/root
文件夹中并运行命令

ADD JAR hdfs:///hive-contrib-0.10.0.jar

但它给了我同样的错误

jar file doesn't exist

有什么办法可以解决这个问题吗? 我应该将这个 jar 文件保存在哪里才能成功运行以及要使用的命令是什么?

hadoop jar hive hql
5个回答
8
投票
  1. 将JAR文件上传到hdfs路径
  2. 使用 Add 命令和 HDFS 完整路径添加 JAR 文件

示例:

hadoop fs -put ~/Downloads/hive.jar /lib/

打开蜂巢外壳

add jar hdfs:///lib/hive.jar

对于本地jar,使用

file://
作为前缀,例如:

add jar file:///tmp/my-lib.jar

2
投票

我发现您的方法存在以下问题。添加之前,请确保您能够在本地文件系统或 hdfs 上列出该文件(无论该文件是否存在)。

您尝试添加的 jar 默认情况下位于 hive 类路径中,作为 $HIVE_HOME/lib 的一部分(在安装了 hive 客户端/服务的本地文件系统上)

另一方面,关于如何在 hive 中添加 jar 的问题,我们可以使用本地文件系统或 hadoop 分布式文件系统(HDFS)添加

Add jar file:///root/hive-contrib-0.10.0.jar (Given that you copied this jar on LFS root directory)

Add jar hdfs://<namenode_hostname>:8020/user/root/hive-contrib-0.10.0.jar (Given that you copied to HDFS root home)

2
投票

如果您想永久添加罐子,您需要执行以下操作。 1.Hive-site.xml(/etc/hive/conf)

<property>
  <name>hive.aux.jars.path</name>
  <value>file:///mnt1/hive-jars/hive-contrib-2.1.1.jar</value>
</property> 
  1. 将 hive-contrib-2.1.1.jar 添加到 hive-site.xml 中配置的路径“/mnt1/hive-jars”

理想情况下,这应该在重新启动 hive-server2 后起作用。 3. sudo 停止 hive-server2 4. sudo 启动 hive-server2

但有时它不起作用。我不知道为什么,所以你可以使用以下肮脏的方式。

将 jar 文件放在以下路径中,以便 hive 在重新启动时自动获取它。

  1. 将 hive-contrib-2.1.1.jar 添加到 /usr/lib/hive-hcatalog/share/hcatalog
  2. sudo 停止 hive-server2
  3. sudo 启动 hive-server2

2
投票

我已阅读上面的这些答案,非常有用。我将所有内容合并为一个解决方案:

  1. 将jar放入本地磁盘并授予读/写权限

    chmod -R 777 /tmp/json.jar  
    
  2. 上传到hdfs文件系统并授予权限:

    hdfs dfs -put /tmp/json.jar hdfs://1.1.1.1:8020/jars/   
    hdfs dfs -chmod -R 777 hdfs://1.1.1.1:8020/jars/
    
  3. 将 jar 添加到 hive 环境中。

    add jar  hdfs://1.1.1.1:8020/jars/json.jar  
    

1
投票
  1. 您必须提供 jar JAR 的完整路径,而不仅仅是其名称。
  2. 不要猜测位置。在尝试添加文件系统之前,请检查文件系统是否存在。
© www.soinside.com 2019 - 2024. All rights reserved.