Kürzlich habe ich mit Amazon Web Services (AWS) gearbeitet und ich habe festgestellt, dass es nicht viel Dokumentation zu diesem Thema gibt, also habe ich meine Lösung hinzugefügt.Wie kann ich auf den Abschluss eines Jobablaufs für Elastic MapReduce in einer Java-Anwendung warten?
Ich schrieb eine Anwendung mit Amazon Elastic MapReduce (Amazon EMR). Nachdem die Berechnungen beendet waren, musste ich etwas an den von ihnen erstellten Dateien arbeiten, also musste ich wissen, wann der Jobfluss seine Arbeit beendet hat.
Dies ist, wie Sie überprüfen können, ob Ihr Auftragsablauf beendet:
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
Sie können in DescribeJobFlowsRequest
für eine bestimmte Job-ID suchen auch dann, wenn diese Aufgabe, fehlgeschlagen ist zu prüfen, fertig.
Ich hoffe, es wird anderen helfen.
Übermittlung Ihre eigene Lösung sofort auf Ihr Problem ist hier sehr willkommen, aber der gewünschte Ansatz ist dieses in eine Frage zu spalten und eine Antwort noch finden Sie unter [Es ist OK Ihre eigenen Fragen zu stellen und Antworten] (http : //blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/) - das hilft, Dinge richtig zu sortieren/zu kategorisieren, dh Platz für wirklich unbeantwortete Fragen zu schaffen anwendbar, danke! –
Danke, ich werde es als zukünftige Referenz notieren. – siditom
Sie sollten auch die anderen abgeschlossenen Staaten einschließen. Einige Leute, die dies lesen, könnten für immer eine Schleife machen, wenn sie 'jobAttributes' wie angegeben initialisieren. 'DescribeJobFlowsRequest jobAttributes = new DescribeJobFlowRequest(). WithJobFlowStates (" COMPLETED "," TERMINATED "," FAILED ");' –