我创建了一个UDF并将jar导出为abc.jar。
在/user/hive/warehouse 的 hdfs 中复制了 jar。
现在,我收到以下错误:
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>
当我这样做时,hadoop fs -ls /user/hive
,我可以在/user/hive/warehouse路径中看到abc.jar。
我哪里做错了,解决方案是什么?
当你从hdfs添加jar时,你使用以下语句:
ADD jar hdfs://namenode/user/hive/warehouse/abc.jar;
您没有通知您正在从 HDFS 添加 JAR。这就是您错误的原因。
希望有帮助
方式,你提到路径,它将在本地文件系统中查找文件。
要么把它放在那里,要么像这样使用 hdfs://
hive> ADD JAR /user/hive/warehouse/abc.jar => local filesystem
hive> ADD JAR hdfs://namenodei/user/hive/warehouse/abc.jar => In hdfs
上述选项仅对当前会话有效。所以每次你需要写ADD JAR
.为了永久添加它,推荐的方法如下。
-
添加配置单元站点.xml
<property> <name>hive.aux.jars.path</name> <value>file://localpath/yourjar.jar</value> </property>
-
将 JAR 文件复制并粘贴到
${HIVE_HOME}/auxlib/
文件夹中