2017-07-28 1 views
2

Je me demande pourquoi ce travail:DME Spark travaillant dans une principale java, mais pas dans une fonction java

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();  

} 
} 

et pourquoi cela ne:

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(); 

} 

} 

Je travaille sur Spark avec EMR. La seule différence que j'ai trouvé entre ces deux projets est le fait que l'un ait la partie d'étincelle écrite dans le principal et l'autre non. J'ai lancé les deux comme application étincelle dans EMR avec l'argument - classe JavaSparkPi .

Voici le défaut de 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 

et il est celui avec succès:

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 

Répondre

1

Mettez ces méthodes d'initialisation Spark à principal.

SparkConf sparkConf = nouveau SparkConf(). SetMaster ("yarn-cluster"). SetAppName ("mySparkApp"); JavaSparkContext jsc = new JavaSparkContext (sparkConf);