(JAVA)如何在AWS EMR中检查Step的状态?

时间:2014-07-03 13:42:12

标签: java amazon-web-services emr

我正在使用Java EMR API在EMR集群上运行pig作业。我正在使用以下代码在JobFLow中添加步骤:

    String jobFlowId = "j-assdasd";
    AmazonElasticMapReduceClient client = new AmazonElasticMapReduceClient(
                    credentials);

    StepFactory stepFactory = new StepFactory();


    StepConfig executePig = new StepConfig()
                    .withName("Execute Pig")
                    .withActionOnFailure(ActionOnFailure.CANCEL_AND_WAIT)
                    .withHadoopJarStep(
                                    stepFactory
                                    .newRunPigScriptStep("s3://bucket/script/load.pig"));

    AddJobFlowStepsRequest pig = new AddJobFlowStepsRequest(jobFlowId)
                    .withSteps( executePig);
    AddJobFlowStepsResult result = client.addJobFlowSteps(pig);

我怎样才能获得"执行猪的状态"状态?我想让程序等到EMR上的步骤结束。

2 个答案:

答案 0 :(得分:3)

我找到了一种方法来实现它:

   List<String> id = result.getStepIds();
   DescribeStepResult res = client.describeStep(new DescribeStepRequest().withStepId(id.get(0)));
   StepStatus status = res.getStep().getStatus();
   String stas = status.getState();

但是,在这里我们需要循环状态直到它的返回完成。

答案 1 :(得分:0)

正如Ajay在他自己的回答中所提到的,需要一个循环来不断检查集群的状态,引导操作和步骤。 This post显示了如何创建这样的循环以使程序保持在其中,直到达到某个状态。