0

我创建了一个 UDF 并将 jar 导出为 abc.jar。

将 jar 复制到 /user/hive/warehouse 的 hdfs 中。

现在,我收到以下错误:

hive> ADD JAR /user/hive/warehouse/abc.jar;
/user/hive/warehouse/abc.jar does not exist
Query returned non-zero code: 1, cause: /user/hive/warehouse/abc.jar does not exist.
hive> 

当我这样做时,我可以在/user/hive/warehouse路径hadoop fs -ls /user/hive中看到abc.jar 。

我在哪里做错了,解决方案是什么?

4

3 回答 3

1

当您从 hdfs 添加 jar 时,您使用以下语句:

ADD jar hdfs://namenode/user/hive/warehouse/abc.jar;

您没有通知您正在从 hdfs 添加 jar。这就是你的错误的原因。

希望有帮助

于 2016-04-28T11:14:52.513 回答
1

顺便说一句,您提到路径,它将在本地文件系统中查找文件。
要么把它放在那里,要么像这样使用hdfs://

hive> ADD JAR /user/hive/warehouse/abc.jar   => local filesystem
hive> ADD JAR hdfs://namenodei/user/hive/warehouse/abc.jar   => In hdfs
于 2016-04-28T12:04:25.357 回答
0

以上选项仅对当前会话有效。所以每次都需要写ADD JAR。为了永久添加它,推荐的方法如下。

  1. 添加 hive-site.xml

    <property> <name>hive.aux.jars.path</name> <value>file://localpath/yourjar.jar</value> </property>

  2. 将 JAR 文件复制并粘贴到文件${HIVE_HOME}/auxlib/夹中

于 2016-04-28T19:37:28.560 回答