2016-04-07 13 views
0

Ich versuche, ein Pig-Skript zu schreiben, das meine UDF verwendet. Wenn ich es ausführe, stoße ich auf "Guice-Erstellungsfehler" wie "java.lang.NoSuchMethodError". Klar, meine Hadoop-Umgebung verwendet eine andere Version von Guice als ich verwende. Ich habe versucht, mehrere Möglichkeiten meine Jar vor Putting, wie zum Beispiel:Apache Pig: Guice Erstellungsfehler. java.lang.NoSuchMethodError

  1. REGISTER my.jar
  2. es vor ‚PIG_CLASSPATH‘ Add ‚HADOOP_CLASSPATH‘, ‚CLASSPATH‘.
  3. Versuchte: export HADOOP_USER_CLASSPATH_FIRST = true
  4. -Dmapreduce.job.user.classpath.first = true

Nichts davon hat funktioniert! Version # von Hadoop: Hadoop 2.6.0-cdh5.4.5

Hier ist mein einfaches Skript:

REGISTER my.jar; 
A = LOAD '/tmp/mydir/' AS (line:chararray); 
B = FOREACH A generate com.mypackage.udf.MyUdf(line); 
dump B; 

Antwort

0

Entweder die Absolution Weg bieten, während REGISTER die udf.jar

OR

lieferte das Jar mit dem zusätzlichen Befehl jar.

Schwein -Dpig.additional.jars =/absoluter/path/von/jar/my.jar [your_other_paramter]

Sie können auch einen Namen Ihrer UDF definieren, an der Spitze der das Skript, so dass Sie nicht jedes Mal den vollständigen UDF-Namen angeben müssen.

REGISTER /absolute/path/of/my.jar; 
define MyUDF com.mypackage.udf.MyUdf(line) 
A = LOAD '/tmp/mydir/' AS (line:chararray); 
B = FOREACH A MyUDF(line); 
dump B; 
+0

Hat nicht funktioniert. Was entspricht -libjars in Pig? – DilTeam

Verwandte Themen