Sto cercando di evitare la soluzione "while (true)" quando aspetto che il lavoro di apache spark sia terminato, ma senza successo.Come attendere correttamente il lavoro di apache spark launcher durante l'avvio da un'altra applicazione?
Ho un'applicazione spark che suppone di elaborare alcuni dati e di mettere un risultato nel database, io lo chiamo dal mio servizio di primavera e vorrei aspettare fino a quando il lavoro è finito.
Esempio:
Launcher con metodo:
@Override
public void run(UUID docId, String query) throws Exception {
launcher.addAppArgs(docId.toString(), query);
SparkAppHandle sparkAppHandle = launcher.startApplication();
sparkAppHandle.addListener(new SparkAppHandle.Listener() {
@Override
public void stateChanged(SparkAppHandle handle) {
System.out.println(handle.getState() + " new state");
}
@Override
public void infoChanged(SparkAppHandle handle) {
System.out.println(handle.getState() + " new state");
}
});
System.out.println(sparkAppHandle.getState().toString());
}
Come attendere correttamente fino a quando lo stato di gestore è "finito".
Sei riuscito a risolvere questo? – gaurav5430