2017-07-28 1 views
2

Ich frage mich, warum funktionierts:EMR Funken arbeiten in einem Java-main, aber nicht in einer Java-Funktion

public final class JavaSparkPi { 

public static void main(String[] args) throws Exception { 

    SparkConf sparkConf = new SparkConf().setMaster("yarn-cluster").setAppName("mySparkApp"); 
    JavaSparkContext jsc = new JavaSparkContext(sparkConf); 
     ArrayList<Integer> list = new ArrayList<>(); 
     for(int i = 0; i < 10 ; i++){ 
      list.add(i); 
     } 

     JavaRDD<Integer> dataSet = jsc.parallelize(list) 
       .map(s->2*s) 
       .map(s->5*s); 

     int weirdStuff= dataSet.reduce((a, b) -> (a + b)/2); 
     System.out.println("stuff is " + weirdStuff); 
     jsc.stop();  

} 
} 

und warum dies nicht:

public final class JavaSparkPi { 

    private void startWorkingOnMicroSpark() { 
    SparkConf sparkConf = new SparkConf().setMaster("yarn-cluster").setAppName("mySparkApp"); 
    JavaSparkContext jsc = new JavaSparkContext(sparkConf); 
     ArrayList<Integer> list = new ArrayList<>(); 
     for(int i = 0; i < 10 ; i++){ 
      list.add(i); 
     } 

     JavaRDD<Integer> dataSet = jsc.parallelize(list) 
       .map(s->2*s) 
       .map(s->5*s); 

     int weirdStuff = dataSet.reduce((a, b) -> (a + b)/2); 
     System.out.println("weirdStuff is " + weirdStuff); 
     jsc.stop();  
    } 
public static void main(String[] args) throws Exception { 

    JavaSparkPi jsp = new JavaSparkPi(); 
    jsp.startWorkingOnMicroSpark(); 

} 

} 

Ich arbeite an Funken mit EMR. Der einzige Unterschied, den ich zwischen diesen beiden Projekten gefunden habe, ist die Tatsache, dass man den Funkenanteil in der Hauptsache geschrieben hat und den anderen nicht. Ich startete beide als Spark-App in EMR mit dem - Klasse JavaSparkPi Argument. Hier

ist das Versagen statut:

Statut :FAILED 

Raison : 

Fichier journal :s3://mynewbucket/Logs/j-3AKSZXK7FKMX6/steps/s-2MT0SB910U3TE/stderr.gz 

Détails:Exception in thread "main" org.apache.spark.SparkException: Application application_1501228129826_0003 finished with failed status 

Emplacement JAR : command-runner.jar 

Classe principale : Aucun 

Arguments : spark-submit --deploy-mode cluster --class JavaSparkPi s3://mynewbucket/Code/SparkAWS.jar 

Action sur échec : Continuer 

und es ist die erfolgreichste:

Emplacement JAR : command-runner.jar 
Classe principale : Aucun 
Arguments : spark-submit --deploy-mode cluster --class JavaSparkPi 
s3://mynewbucket/Code/SparkAWS.jar 
Action sur échec : Continuer 

Antwort

1

diese Funken Initialisierungsmethoden zur Haupt Put.

SparkConf sparkConf = new SparkConf(). SetMaster ("Garn-Cluster"). SetAppName ("mySparkApp"); JavaSparkContext jsc = neuer JavaSparkContext (sparkConf);

Verwandte Themen