2015-01-01 14 views
8

スカラとスパークを初めて使用しています。今日、私はいくつかのコードを書こうとしましたが、それはスパークで動作させましたが、例外がありました。スカラコードでスクロール例外をスローする

ローカルScalaではこのコードの動作は

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 
    } 

が、私は火花にこのコードを入れたとき、それは言う例外をスロー:私は以下のコード、コードの作業をコメントアウト場合

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) 

スパーク

for (i <- 1 to size) 

に誰かが、なぜ下さい説明することができます。

+0

Sort.scalaの35行目は何ですか? '新しいListBuffer'行ですか?あなたが後でそれを削除するときに消える例外をスローするのは奇妙に思えます。スパークで失敗する完全な例を投稿してください –

+2

これはスカラーのバージョンの不一致のようです。使用しているスカラーのバージョンが、そのスパークが作成されたバージョンと、実行しているクラスター上のバージョンと一致することを確認します。 – lmm

答えて

11

ありがとう、私はこの問題を解決しました。根本原因は私のローカルスカラーが2.11.4ですが、私のスパーククラスターは1.2.0バージョンで動作していることです。 1.2バージョンのsparkは2.10 scalaでコンパイルされました。

解決策は2.10のscalaでローカルコードをコンパイルし、コンパイルしたjarをsparkにアップロードします。すべてうまく動作します。

+0

あなたは何をしましたか説明できますか? .sbtファイルの '2.11.4'から' scalaVersion:= "2.10.0"を設定するだけですか? – gsamaras

+0

私は@gsamarasと同じ質問をしました – HappyCoding

+0

@HappyCoding私はそれをどのように解決したのか覚えていませんが、ここで私の経験です:https://gsamaras.wordpress.com/code/spark-cluster/ – gsamaras

関連する問題