2016-04-28 13 views
0

Ich habe eine UDF erstellt und das Glas als abc.jar exportiert.Das Hinzufügen von JAR in Hive führt zu einem Fehler, da "Abfrage einen Code ungleich null zurückgegeben hat: 1, weil: /user/hive/warehouse/abc.jar nicht existiert."

Kopierte das Glas in hdfs unter/user/hive/warehouse.

Nun, ich bin immer unter Fehler:

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> 

Als ich tun, hadoop fs -ls /user/hive, ich abc.jar bei /user/Nest/Lager Weg sehen kann.

Wo mache ich was falsch und was ist die Lösung dafür?

+0

Platzieren Sie Ihre UDF-Glas auf dem lokalen Dateisystem der Hive-Client-Maschine und geben Sie den absoluten lokalen Pfad des Glases im ADD JAR-Befehl –

Antwort

1

Wenn Sie jar von hdfs hinzufügen verwenden Sie die folgende Anweisung:

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

Sie nicht darüber informiert, dass Sie das Glas aus hdfs hinzufügen. Das ist die Ursache für Ihren Fehler.

Hoffnung, die

+0

danke. es hat funktioniert – earl

0

Sie Art und Weise hilft, können Sie den Pfad sind zu nennen, wird die Datei in dem lokalen Dateisystem suchen.
Entweder es dort platzieren, oder hdfs verwenden: nur // ähnliche

hive> ADD JAR /user/hive/warehouse/abc.jar => local filesystem 
hive> ADD JAR hdfs://namenodei/user/hive/warehouse/abc.jar => In hdfs 
+0

Danke. Es funktionierte mit beiden Möglichkeiten – earl

0

oben genannten Optionen sind für aktuelle Sitzungen gültig. Also jedes Mal, wenn Sie schreiben müssen ADD JAR. Um es dauerhaft hinzuzufügen, sind die folgenden Möglichkeiten.

  1. hinzufügen in hive-site.xml

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

  2. Kopieren Sie die JAR-Datei in den Ordner ${HIVE_HOME}/auxlib/

+0

Antwort zielt nicht auf die Beantwortung der OP-Frage. – SrinivasR