Ostatnio pracowałem z Amazon Web Services (AWS) i zauważyłem, że nie ma zbyt wiele dokumentacji na ten temat, więc dodałem swoje rozwiązanie.Jak mogę poczekać na zakończenie elastycznego przepływu pracy MapReduce w aplikacji Java?
Piszę aplikację przy użyciu Amazon Elastic MapReduce (Amazon EMR). Po zakończeniu obliczeń musiałem wykonać pewne prace nad utworzonymi przez nie plikami, więc musiałem wiedzieć, kiedy przepływ pracy zakończył pracę.
W ten sposób można sprawdzić, czy przepływ zadanie zakończone:
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
Można również poszukać konkretnego id pracy w DescribeJobFlowsRequest
a następnie sprawdzić, czy to zadanie zostało zakończone z niepowodzeniem.
Mam nadzieję, że pomoże innym.
Złożenie własnego rozwiązania problemu natychmiast jest bardzo mile widziane tutaj jednak pożądane podejście jest podzielić to na pytanie i odpowiedź nadal, patrz [Jest OK, aby zadawać i odpowiadać na własne pytania] (http : //blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/) - pomaga to odpowiednio sortować/kategoryzować rzeczy, np. zrobić miejsce na naprawdę bez odpowiedzi pytania zastosowanie, dzięki! –
Dzięki, zauważę to jako punkt odniesienia w przyszłości. – siditom
Powinieneś również uwzględnić pozostałe ukończone stany. Niektórzy ludzie czytający to mogą zapętlać się na zawsze, jeśli zainicjują 'jobAttributes' jak podano. 'DescribeJobFlowsRequest jobAttributes = new DescribeJobFlowRequest(). WithJobFlowStates (" COMPLETED "," TERMINATED "," FAILED ");' –