2016-03-30 26 views
0

MapRduce Jobを使用してAvroParquet形式のファイルを書き込むSparkストリーミングプログラムを実行しています。プログラムはクラスタで実行されたときに正常に動作しますが、ローカルでは失敗します。mapreduce Job()が 'java.lang.IllegalStateException'例外をスローしました。 org.apache.hadoop.mapreduce.Job.toString()を評価できません

コード

import org.apache.hadoop.mapreduce.Job 
val job = Job.getInstance() 

は、次の例外がスローされます。ここでは

Method threw 'java.lang.IllegalStateException' exception. Cannot evaluate org.apache.hadoop.mapreduce.Job.toString() 

ジョブをストリーミング火花を提出するために使用するコードです:

SparkConf conf = new SparkConf(false) 
       .setMaster("local[2]") 
       .setAppName("test"); 
    SparkContext sc = new SparkContext(conf); 
    MyClass job = new MyClass(); 
    job.run(); 

    class MyClass(){ 
    protected def run(): Unit ={ 

     val ssc: StreamingContext = createStreamingContext(parameters) 
     // here there is something like 
     // stream.map(func1).reduceBykey(func2).foreachRDD(rdd => {val job = Job.getInstance()}) 
     ssc.start() 
    } 
+0

spark-submitでローカルにジョブを送信していますか? –

+0

いいえ、私はそれを説明するための質問を編集しました。 – nicola

答えて

0

これは非ブロッキング例外であることがわかりました。 私はデバッグモードで例外を見ることができましたが、プログラムは最後まで正しく実行できます。

0

おそらくそれがために起こりますあなたの仕事の前にtoStringを呼び出すことを試みます。代わりに、手動でジョブ・インスタンスを作成する

、火花提出--class MyClassの--master現地でそれを提出してみてください[2] /path/to/yourjar.jar(Submitting spark applications

あなたのコードは何かを見ることができますこのように:

object MyClass { 
    def main(args: Array[String]): Unit ={ 
    val conf = new SparkConf(false) 
      .setMaster("local[2]") 
      .setAppName("test"); 
    val sc = new SparkContext(conf); 

    // do what you need 
} 
関連する問題