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を正しく追加するために使用している形式ですか?
あなたは ''この "--jobName = myJobName" のためにしてみてくださいことはできますか? – Ravikumar