Spark Java-Anwendung: java.lang.ClassNotFoundException

8

Ich habe eine Apache Spark-Anwendung mit Java erstellt. Es zählt nur die Zeilen mit dem "Funken" -Wort 1000 Mal.

Hier ist mein Code:

%Vor%

Wenn ich in der Eclipse-IDE debugge, stoße ich auf java.lang.ClassNotFoundException :

%Vor%

Ich habe auch versucht, dies innerhalb des Clusters mit spark-submit zu implementieren, aber es wurde trotzdem die gleiche Ausnahme gefunden. Hier ist ein Teil des Stacktrace:

%Vor%

Irgendwelche Ideen, wie man das löst? Vielen Dank im Voraus!

    
jaysonpryde 13.06.2014, 13:30
quelle

3 Antworten

10

Sie müssen das Glas mit Ihrer Arbeit an die Arbeiter liefern. Um dies zu tun, muss maven ein jar bauen und dieses jar dem Kontext hinzufügen:

%Vor%

Für einen 'echten' Job müssten Sie ein Jar mit Abhängigkeiten erstellen (überprüfen Sie das Maven Schatten-Plugin), aber für einen einfachen Job ohne externe Abhängigkeiten genügt ein einfaches Jar.

[*] Ich bin nicht sehr vertraut mit der Spark-Java-API, vorausgesetzt, es sollte so etwas sein.

    
maasg 14.06.2014 11:15
quelle
3

Sie müssen Ihr Glas in den Klassenpfad des Mitarbeiters einschließen. Sie können dies auf zwei Arten tun:

  • Verwenden Sie die SparkContext-Methode addJar (Sie können die Dokumentation auf dieser Seite überprüfen Ссылка )
  • Hinzufügen des jar im lib-Verzeichnis in Ihrer Spark-Distribution.

Der erste ist die empfohlene Methode.

    
Alvaro Agea 13.11.2014 07:42
quelle
1

Dies kann auch passieren, wenn Sie bei Verwendung der Befehlszeile spark-submit nicht den vollständigen Paketnamen angeben. Wenn Ihre main -Methode für die Anwendung in test.spark.SimpleApp ist, muss die Befehlszeile etwa so aussehen:

%Vor%

Das Hinzufügen von --class "SimpleApp" wird mit ClassNotFoundException fehlschlagen.

    
DavidR 27.07.2016 18:21
quelle

Tags und Links