2016-07-22 39 views
0

Ich verwende eine Spark-Anwendung, die eine benutzerdefinierte Klasse verwendet. Ich benutze Eclipse und Spark (v 1.6.1 with hadoop2.6).Warum wirft Spark-Anwendung "java.lang.NoSuchMethodException"?

Diese Klasse ist Teil eines Glases, und ich habe das Glas zu Eclipse classpath hinzugefügt. Allerdings, wenn die Anwendung läuft erhalte ich die Fehler

java.lang.NoSuchMethodException: myWorld.myClass.<init>(org.apache.spark.SparkConf) 

Programm:

SparkConf conf = new SparkConf(true); 
    //specify some Spark settings for conf 
    /*... 
    ...*/ 
JavaSparkContext sc = new JavaSparkContext(conf); 

Die Klasse, hat myWorld.myClass.java nicht über die so genannte init<> Methode und durch Design, nicht erforderlich. Also, nicht sicher, warum SparkConfig es erfordert. :(

+2

so genannte 'init <>' Funktion ist ein Konstruktor. Hat Sie einen Konstruktor myClass (SparkConf)? – Jens

+2

Aus dem gleichen Grund wie immer: Version nicht übereinstimmen. – chrylis

+0

@chrylis, Versionskonflikt? Könnten Sie bitte mehr werfen Licht auf das? – nikk

Antwort

0

Wenn Sie mit Funken einreichen Anwendung auszuführen Sie es mit Classpath in der Befehlszeile und auch exectuor Classpath bereitstellen muss.

--driver-class-path your.jar --driver-java-options "-Dspark.executor.extraClassPath=your.jar" 

ganzes Verzeichnis Versorgung statt JAR-Datei funktioniert für mich.