sid*_*tom 11 java amazon-web-services amazon-emr elastic-map-reduce
最近我一直在使用亚马逊网络服务(AWS),我注意到关于这个主题的文档不多,所以我添加了我的解决方案.
我正在使用Amazon Elastic MapReduce(Amazon EMR)编写应用程序.计算结束后,我需要对它们创建的文件执行一些工作,所以我需要知道作业流何时完成其工作.
这是您如何检查您的工作流程是否完成的方法:
AmazonElasticMapReduce mapReduce = new AmazonElasticMapReduceClient(credentials);
DescribeJobFlowsRequest jobAttributes = new DescribeJobFlowsRequest()
.withJobFlowStates("COMPLETED");
List<JobFlowDetail> jobs = mapReduce.describeJobFlows(jobAttributes).getJobFlows();
JobFlowDetail detail = jobs.get(0);
detail.getJobFlowId(); //the id of one of the completed jobs
Run Code Online (Sandbox Code Playgroud)
您还可以查找特定的作业ID DescribeJobFlowsRequest
,然后检查该作业是否已完成失败.
我希望它会帮助别人.
一旦作业流程完成,集群就会停止,HDFS 分区就会丢失。为了防止数据丢失,请将作业流程的最后一步配置为将结果存储在 Amazon S3 中。
如果JobFlowInstancesDetail
:KeepJobFlowAliveWhenNoSteps
参数设置为 TRUE,则一旦步骤完成,作业流程将转换为 WAITING 状态而不是关闭。
每个作业流程最多允许 256 个步骤。
如果您的工作很耗时,我建议您定期存储结果。
长话短说:无法知道它何时完成。相反,您需要将保存数据作为工作的一部分。