Klasse nicht in Hadoop Job gefunden
Ich habe einen Kartenverkleinerungsjob, der seine Eingabe von DocumentDB erhält. Ich habe JAR-Dateien im lib-Verzeichnis in meinem Quellcode hinzugefügt und beim Ausführen des Jobs auch die -libjars verwendet. aber ich bekomme immer noch den klasse nicht gefunden fehler für eine klasse in der jar datei. Hier ist ein Teil meines Treiberprogramms
public class MapReduceDriver extends Configured implements Tool {
public static void main(String[] args) throws Exception {
int res = ToolRunner.run(new Configuration(), new MapReduceDriver(), args);
System.exit(res);
}
@Override
public int run(String[] args) throws Exception {
Configuration conf = this.getConf();
....
Wenn ich die -libjars benutze, habe ich einmal die erforderlichen JAR-Dateien auf den lokalen Treiber und einmal auf den hdfs gelegt, aber keiner hat funktioniert. Wie kann ich sicherstellen, dass die -libjars funktionieren?
p.s. Ich verwende einen HDInsight-Cluster mit zwei Knoten (unter Microsoft Azure).
Hier ist die Fehlermeldung, die ich bekomme
Error: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class com.microsoft.azure.documentdb.hadoop.DocumentDBInputFormat not found
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1961)
at org.apache.hadoop.mapreduce.task.JobContextImpl.getInputFormatClass(JobContextImpl.java:174)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:726)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:340)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:168)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1594)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:163)
Caused by: java.lang.ClassNotFoundException: Class com.microsoft.azure.documentdb.hadoop.DocumentDBInputFormat not found
at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:1867)
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1959)
... 8 more