java - 使用java代码将spark作业提交到AWS EMR并等待执行并获得最终状态

标签 java apache-spark amazon-emr

我正在尝试通过 AWS EMR SDK API 向 AWS EMR 提交 Spark 作业。 我希望流程提交作业,然后等待作业完成/失败并获取相应的状态。

代码:

    AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
AmazonElasticMapReduce emr =
        AmazonElasticMapReduceClientBuilder
                .standard()
                .withCredentials(new AWSStaticCredentialsProvider(credentials))
                .build();

HadoopJarStepConfig sparkStepConf =
        new HadoopJarStepConfig()
                .withJar("command-runner.jar")
                .withArgs("spark-submit")
                .withArgs("--master", "yarn")
                .withArgs(sparkJarPath)
                .withArgs(args);

StepConfig sparkStep =
        new StepConfig().withName("Spark Step").withActionOnFailure(ActionOnFailure.CONTINUE).withHadoopJarStep(
                sparkStepConf);

AddJobFlowStepsRequest req =
        new AddJobFlowStepsRequest().withJobFlowId(clusterId).withSteps(Collections.singletonList(sparkStep));
emr.addJobFlowSteps(req);

找不到可获取已提交作业状态的内容

最佳答案

这是一个示例(请检查某些代码区域是否为空):

ListStepsResult stepsResult = emr.listSteps(new ListStepsRequest().withClusterId(clusterId).withStepIds(req.getStepIds()));
List<StepSummary> stepsList = stepsResult.getSteps();
StepSummary stepSummary = stepsList.get(0);
StepStatus stepSummaryStatus = stepSummary.getStatus();
String stepStatus = stepSummaryStatus.getState();
StepExecutionState stepState = StepExecutionState.valueOf(stepStatus);

stepState 会有你想要的。

关于java - 使用java代码将spark作业提交到AWS EMR并等待执行并获得最终状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45377807/

相关文章:

elasticsearch - 在Elasticsearch中映射多个字段

java - 每次实例化子类时都会创建父类(super class)对象吗?

apache-spark - Pyspark 数据框中的重复行

csv - 格式化(删除类/括号)Spark CSV saveAsTextFile 输出?

json - Apache Spark 读取带有额外列的 JSON

apache-spark - Amazon EMR 和 S3,org.apache.spark.sql.AnalysisException : path s3://. .../var/table 已存在

pyspark - EMR PySpark "ModuleNotFoundError: No module named ' spacy'"

java - 使用采用可变数量参数的方法

java - Spring Boot RestTemplate 交换 400 错误请求

java - 无法在java中的二维数组中动态项目