2016-10-24 20 views
0

私はSparkLauncherを使用してコードからスパークアプリケーションを送信しています。SparkLauncher:App argsが認識されないオプションとして扱われます

 Map<String, String> env = new HashMap<String, String>(); 
     env.put("SPARK_PRINT_LAUNCH_COMMAND", "1"); 

     System.out.println("Creating SparkLauncher"); 
     SparkLauncher launcher = new SparkLauncher(env); 
     launcher.setSparkHome(sparkHome); 
     launcher.setAppResource(appResource); 
     launcher.setMaster(sparkMaster); 
     launcher.setMainClass(mainClass); 
     launcher.setAppName("TestFromJersey") 
     .setVerbose(true) 
     .setConf("spark.cores.max", "20") 
     .setConf("spark.executor.memory", "30G") 
     .setConf("spark.executor.extraJavaOptions", "-XX:+UseG1GC -XX:+PrintFlagsFinal -XX:+PrintReferenceGC -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintAdaptiveSizePolicy -XX:+UnlockDiagnosticVMOptions -XX:+G1SummarizeConcMark -XX:ConcGCThreads=13 -XX:NewRatio=1 -XX:+PrintTenuringDistribution"); 

     for(File f : new File("/home/user/jars").listFiles()){ 
      launcher.addJar(f.getAbsolutePath()); 
     } 

     try { 
      System.out.println("Launching Spark Job from SparkLauncher"); 
      launcher.addAppArgs("--jobName myJobName", 
        "--time "+System.currentTimeMillis()+"", 
        "--authUser admin", 
        "--savePage true"); 
      launcher.startApplication(new SparkAppHandle.Listener() { 
        @Override public void stateChanged(SparkAppHandle h) { 
         System.out.println("App State:" + h.getState()); 
        } 
        @Override public void infoChanged(SparkAppHandle h) { } 
        }); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      System.out.println("error in launching Spark Application"); 
      e.printStackTrace(); 
     } 

ここで、ジョブはまったく実行されず、ハンドラ関数は呼び出されません。これはジョブ構成のエラーが原因と考えられます。

org.apache.commons.cli.UnrecognizedOptionException: Unrecognized option: -jobName myJobName 

だから、コードがsparkArguments別にappArgsを認識できないように私には思える:出力ログに私は次のエラーを見ることができます。

任意のポインタ? AppArgsを正しく追加するために使用している形式ですか?

+0

あなたは ''この "--jobName = myJobName" のためにしてみてくださいことはできますか? – Ravikumar

答えて

0

OK]をクリックして、いくつかのヒットと裁判で、引数を指定する正しい方法は次のとおりです。

launcher.addAppArgs("--jobName","myJobName", 
        "--authUser","admin", 
        "--savePage","true"); 
関連する問題