2015-01-01 14 views
8

Sono nuovo di scala e scintilla. Oggi ho provato a scrivere del codice e farlo scattare, ma ho ottenuto un'eccezione.codice scala lanciare l'eccezione nella scintilla

questo lavoro di codice in scala locale

import org.apache.commons.lang.time.StopWatch 
import org.apache.spark.{SparkConf, SparkContext} 

import scala.collection.mutable.ListBuffer 
import scala.util.Random 

    def test(): List[Int] = { 
    val size = 100 
    val range = 100 
    var listBuffer = new ListBuffer[Int] // here throw an exception 
    val random = new Random() 
    for (i <- 1 to size) 
     listBuffer += random.nextInt(range) 
    listBuffer.foreach(x => println(x)) 
    listBuffer.toList 
    } 

ma quando ho messo questo codice in scintilla, è un'eccezione dice:

15/01/01 14:06:17 INFO SparkDeploySchedulerBackend: SchedulerBackend is ready for scheduling beginning after reached minRegisteredResourcesRatio: 0.0 
Exception in thread "main" java.lang.NoSuchMethodError: scala.runtime.ObjectRef.create(Ljava/lang/Object;)Lscala/runtime/ObjectRef; 
    at com.tudou.sortedspark.Sort$.test(Sort.scala:35) 
    at com.tudou.sortedspark.Sort$.sort(Sort.scala:23) 
    at com.tudou.sortedspark.Sort$.main(Sort.scala:14) 
    at com.tudou.sortedspark.Sort.main(Sort.scala) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:483) 
    at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:358) 
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75) 
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 

se io commento il codice qui sotto, il codice di lavoro in spark

for (i <- 1 to size) 

qualcuno può spiegare perché, per favore.

+0

Che cos'è la riga 35 di Sort.scala? La linea 'new ListBuffer'? Sembra strano che questo generi un'eccezione che scompare quando si rimuove il per dopo. Per favore pubblica un esempio completo che fallisce con la scintilla –

+2

Sembra una mancata corrispondenza della versione scala. Verifica che la versione di scala in cui stai usando sia compatibile con quella scintilla e quella sul cluster dove stai correndo. – lmm

risposta

11

Grazie a @Imm, ho risolto questo problema. La causa principale è che il mio scala locale è 2.11.4, ma il mio spark cluster è in esecuzione alla versione 1.2.0. La versione 1.2 della scintilla è stata compilata da 2.10 scala.

Quindi la soluzione è compilare codice locale per 2,10 scala e caricare il vaso compilato in scintilla. Tutto funziona bene

+0

Puoi spiegare cosa hai fatto esattamente? Basta impostare 'scalaVersion: =" 2.10.0 "' da '2.11.4' nel file .sbt? – gsamaras

+0

Ho la stessa domanda di @gsamaras ha fatto – HappyCoding

+0

@HappyCoding Non ricordo come ho risolto, ma qui è la mia esperienza: https://gsamaras.wordpress.com/code/spark-cluster/ – gsamaras

Problemi correlati