2015-04-08 7 views
5

Ho scritto un programma spark con scala, ma quando uso "spark-submit" per inviare il mio progetto, Ho incontrato java.lang.ClassNotFoundException.java.lang.ClassNotFoundException, quando uso "spark-submit" con un nuovo nome di classe anziché "SimpleApp",

mio file .sbt: nome

name:="Spark Project" 

version:="1.0" 

scalaVersion:="2.10.5" 

libraryDependencies+="org.apache.spark" %% "spark-core" % "1.3.0" 

mia del file .scala è SparkProject.scala e in essa il nome dell'oggetto è SparkProject troppo.

/* SparkProject.scala */ 
import org.apache.spark.SparkContext 
import org.apache.spark.SparkContext._ 
import org.apache.spark.SparkConf 

object SparkProject { 
    def main(args: Array[String]) { 
    val logFile = "YOUR_SPARK_HOME/README.md" // Should be some file on your system 
    val conf = new SparkConf().setAppName("Simple Application") 
    val sc = new SparkContext(conf) 
    val logData = sc.textFile(logFile, 2).cache() 
    val numAs = logData.filter(line => line.contains("a")).count() 
    val numBs = logData.filter(line => line.contains("b")).count() 
    println("Lines with a: %s, Lines with b: %s".format(numAs, numBs)) 
    } 
} 

il mio comando di presentare progetto è:

spark-submit --class "SparkProject" --master local[12] target/scala-2.10/spark-project_2.10-1.0.jar 

Qualcuno sa come risolvere questo? Finalmente ciò che mi fa confondere è quando provo l'esempio fornire qui [http://spark.apache.org/docs/latest/quick-start.html],it funziona bene.Ma quando costruisco un nuovo progetto e l'invio va male. Qualsiasi aiuto sarà molto apprezzato.

+5

Penso che manchi il 'nome del pacchetto' nel nome della classe nel comando di invio. Credo che nel tuo progetto, il tuo file SparkProject.scala abbia qualcosa come 'package com.example' come prima linea. Se è ... allora questo significa che il nome completo della tua classe sarà 'com.example.SparkProject' quindi dovrai usare '- class" com.example.SparkProject "'. –

+0

@SarveshKumarSingh. Si ! Hai ragione, questa è solo la cosa che nedd.Thanks molto. – zhang

+1

Ragazzi, potreste volerlo mettere come risposta, per evitare di mantenere questo come "senza risposta" ad altri che stanno cercando di aiutare ;-) –

risposta

0

La rimozione del nome del pacchetto funziona per me.

5

L'aggiunta del nome del pacchetto ha funzionato per me.

Il mio codice è troppo semplice:

package spark.wordcount 

/* SimpleApp.scala */ 
import org.apache.spark.SparkContext 
import org.apache.spark.SparkContext._ 
import org.apache.spark.SparkConf 

object WordCount { 
    def main(args: Array[String]) { 
    val infile = "/input" // Should be some file on your system 
    val conf = new SparkConf().setAppName("word count") 
    val sc = new SparkContext(conf) 
    val indata = sc.textFile(infile, 2).cache() 
    val words = indata.flatMap(line => line.split(" ")).map(word => (word,1)).reduceByKey((a,b) => (a+b)) 
    words.saveAsTextFile("/output") 
    println("All words are counted!") 
    } 
} 

ho provato a correre scintilla presentare in questo modo: [root @ sparkmaster bin] # ./spark-submit --class spark.wordcount.WordCount/opt/spark-wordcount-in-scala.jar e ha funzionato con successo.

0

Stavo ottenendo lo stesso errore mentre si eseguiva la scintilla su Windows e la costruzione con sbt.

Non avevo la riga "pacchetto xxx" (pacchetto E.g spark.wordcount) nel codice. Se non si dispone di alcuna menzione di "pacchetto xxx" nel codice poi l'esecuzione del comando

spark-submit --class "SparkProject" --master local[12] target/scala-2.10/spark-project_2.10-1.0.jar 

dovrebbe funzionare come detto da @SarveshKumarSingh nella sezione commenti della questione.

Ma stavo ottenendo l'errore per un motivo diverso. Il file di scala che ho creato nel blocco note era SimpleApp.scala.txt. Quando l'ho salvato correttamente come SimpleApp.scala ha funzionato.

0

I miei due centesimi,

Ho provato tutte le soluzioni di cui - che sono tutti validi. Nel mio caso, ho apportato una modifica al nome del pacchetto dopo aver eseguito
pacchetto sbt
Quindi, stavo ottenendo l'errore citato. Sulla ricompilazione il "pacchetto $ sbt" ha funzionato per me.

0

Per gli altri che sono ancora alla ricerca di una soluzione. Ho provato tutte le altre risposte ma non ha funzionato con me. Funziona per me quando rimuovo le virgolette doppie sul nome della classe. Puoi provare spark-submit --class SparkProject --master local [12]

Problemi correlati