@Override
public List<List<String>> rows() {
List<List<String>> progressRows = new ArrayList<>();
SortedSet<SparkStage> keys = new TreeSet<SparkStage>(progressMap.keySet());
for (SparkStage stage : keys) {
SparkStageProgress progress = progressMap.get(stage);
final int complete = progress.getSucceededTaskCount();
final int total = progress.getTotalTaskCount();
final int running = progress.getRunningTaskCount();
final int failed = progress.getFailedTaskCount();
SparkJobMonitor.StageState state =
total > 0 ? SparkJobMonitor.StageState.PENDING : SparkJobMonitor.StageState.FINISHED;
if (complete > 0 || running > 0 || failed > 0) {
if (complete < total) {
state = SparkJobMonitor.StageState.RUNNING;
} else {
state = SparkJobMonitor.StageState.FINISHED;
}
}
String attempt = String.valueOf(stage.getAttemptId());
String stageName = "Stage-" +String.valueOf(stage.getStageId());
String nameWithProgress = getNameWithProgress(stageName, complete, total);
final int pending = total - complete - running;
progressRows.add(Arrays
.asList(nameWithProgress, attempt, state.toString(), String.valueOf(total), String.valueOf(complete),
String.valueOf(running), String.valueOf(pending), String.valueOf(failed), ""));
}
return progressRows;
}