2016-03-30 6 views
0

Ich führe ein Spark-Streaming-Programm, das einen mapreduce-Job verwendet, um Dateien im AvroParquet-Format zu schreiben. Das Programm funktioniert ordnungsgemäß, wenn es auf dem Cluster ausgeführt wird, schlägt jedoch lokal fehl.mapreduce Job() hat 'java.lang.IllegalStateException' Ausnahme ausgelöst. Kann nicht ausgewertet werden org.apache.hadoop.mapreduce.Job.toString()

Der Code

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

wirft die folgende Ausnahme:

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

Hier ist der Code verwendet, um die Funken Streaming-Job zu übergeben:

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

Senden Sie den Auftrag auch lokal mit spark-submit ein? –

+0

Nein, ich habe die Frage bearbeitet, um sie zu erklären. – nicola

Antwort

0

Ich fand heraus, dass dies eine nicht blockierende Ausnahme ist. Ich konnte die Ausnahme im Debug-Modus sehen, aber das Programm kann bis zum Ende korrekt ausgeführt werden.

0

Wahrscheinlich, weil es geschieht versucht in Ihrem Job toString aufzurufen, bevor es gesendet wird.

Statt die Job-Instanz manuell zu erstellen, versuchen Sie es mit Funken einreichen --Klasse MyClass --master local [2] /path/to/yourjar.jar (Submitting spark applications)

Ihr Code etwas aussehen könnte einreichen wie folgt:

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 
} 
Verwandte Themen