@Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } SparkStage that = (SparkStage) o; return getStageId() == that.getStageId() && getAttemptId() == that.getAttemptId(); }
private Map<SparkStage, SparkStageProgress> progressMap() { return new HashMap<SparkStage, SparkStageProgress>() {{ put(new SparkStage(1, 0), new SparkStageProgress(4, 3, 1, 0)); put(new SparkStage(3, 1), new SparkStageProgress(6, 4, 1, 1)); put(new SparkStage(9, 0), new SparkStageProgress(5, 5, 0, 0)); put(new SparkStage(10, 2), new SparkStageProgress(5, 3, 2, 0)); put(new SparkStage(15, 1), new SparkStageProgress(4, 3, 1, 0)); put(new SparkStage(15, 2), new SparkStageProgress(4, 4, 0, 0)); put(new SparkStage(20, 3), new SparkStageProgress(3, 1, 1, 1)); put(new SparkStage(21, 1), new SparkStageProgress(2, 2, 0, 0)); }}; }
sumTotal += total; sumComplete += complete; String s = stage.toString(); String stageName = "Stage-" + s; if (total <= 0) {
@Override public Map<SparkStage, SparkStageProgress> getSparkStageProgress() { Map<SparkStage, SparkStageProgress> stageProgresses = new HashMap<SparkStage, SparkStageProgress>(); for (int stageId : getStageIds()) { SparkStageInfo sparkStageInfo = getStageInfo(stageId); if (sparkStageInfo != null) { int runningTaskCount = sparkStageInfo.numActiveTasks(); int completedTaskCount = sparkStageInfo.numCompletedTasks(); int failedTaskCount = sparkStageInfo.numFailedTasks(); int totalTaskCount = sparkStageInfo.numTasks(); SparkStageProgress sparkStageProgress = new SparkStageProgress( totalTaskCount, completedTaskCount, runningTaskCount, failedTaskCount); SparkStage stage = new SparkStage(sparkStageInfo.stageId(), sparkStageInfo.currentAttemptId()); stageProgresses.put(stage, sparkStageProgress); } } return stageProgresses; }
@Override public Map<SparkStage, SparkStageProgress> getSparkStageProgress() throws HiveException { List<SparkStageInfo> sparkStagesInfo = getSparkStagesInfo(); Map<SparkStage, SparkStageProgress> stageProgresses = new HashMap<SparkStage, SparkStageProgress>(); if (sparkStagesInfo != null) { for (SparkStageInfo sparkStageInfo : sparkStagesInfo) { if (sparkStageInfo != null && sparkStageInfo.name() != null) { int runningTaskCount = sparkStageInfo.numActiveTasks(); int completedTaskCount = sparkStageInfo.numCompletedTasks(); int failedTaskCount = sparkStageInfo.numFailedTasks(); int totalTaskCount = sparkStageInfo.numTasks(); SparkStageProgress sparkStageProgress = new SparkStageProgress(totalTaskCount, completedTaskCount, runningTaskCount, failedTaskCount); SparkStage stage = new SparkStage(sparkStageInfo.stageId(), sparkStageInfo.currentAttemptId()); stageProgresses.put(stage, sparkStageProgress); } } } return stageProgresses; }
@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; }