我正在使用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上的步骤结束。
答案 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显示了如何创建这样的循环以使程序保持在其中,直到达到某个状态。