Ich habe * .jar-Datei für mein Apache-Spark-Scala-Projekt mit Maven erstellt. Wenn ich versuche, die Hauptklasse auszuführen, wird bei einer Zeile des Codes der Fehler angezeigt Exception in thread "main" java.lang.NoClassDefFoundError
für die Klasse org.apache.spark.ml.recommendation.ALS
.
Ich führe den Spark-Submit wie folgt aus:
sudo -u hdfs /usr/bin/spark-submit --class
org.apache.spark.examples.ml.MyTest spark-examples-*.jar --rank 10 --path
/home/ubuntu/data
Es sieht so aus, als ob es nur nicht finden kann org.apache.spark.ml.recommendation.ALS
. Ich habe die folgenden Importanweisungen in der Klasse:
package org.apache.spark.examples.ml
import java.util.Date
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.examples.mllib.AbstractParams
import org.apache.spark.ml.recommendation.ALS
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.{Row, SQLContext}
import scopt.OptionParser
Wie kann ich dieses Problem lösen?
UPDATE 1:
Ich fügte hinzu maven-assebly
Plugin zu pom.xml
und auch assembly.xml
in den Ordner resources
. Dann habe ich erfolgreich gemacht mvn package
, aber wieder das gleiche Problem.
UPDATE 2:
jar -tvf spark-examples-1.5.3-SNAPSHOT-hadoop2.2.0.jar | grep "ALS"
2678 Mon May 23 13:11:44 CEST 2016 org/apache/spark/examples/ml/recommendation/MyFunc$ALSParams.class
Antworten:
0 für die Antwort № 1Finden Sie zuerst Grund für das Scheitern.
1) Fehlt die Klasse?
2) oder Es ist Initialisierungsproblem.
Um herauszufinden, ob eine Klasse verfügbar ist, führen Sie den Befehl aus jar -tvf <.jar> | grep "class name"
Auf diese Weise können Sie herausfinden, ob eine Klassendatei vorhanden ist oder nicht, oder ihr Initialisierungsproblem.