diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java index 2b2da67..c315dd2 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/tez/TezJobMonitor.java @@ -216,8 +216,10 @@ private String printStatus(Map progressMap, String lastReport, SortedSet keys = new TreeSet(progressMap.keySet()); for (String s: keys) { Progress progress = progressMap.get(s); - int complete = progress.getSucceededTaskCount(); - int total = progress.getTotalTaskCount(); + final int complete = progress.getSucceededTaskCount(); + final int total = progress.getTotalTaskCount(); + final int running = progress.getRunningTaskCount(); + final int failed = progress.getFailedTaskCount(); if (total <= 0) { reportBuffer.append(String.format("%s: -/-\t", s, complete, total)); } else { @@ -225,7 +227,22 @@ private String printStatus(Map progressMap, String lastReport, completed.add(s); perfLogger.PerfLogEnd(CLASS_NAME, PerfLogger.TEZ_RUN_VERTEX + s); } - reportBuffer.append(String.format("%s: %d/%d\t", s, complete, total)); + if(complete < total && (complete > 0 || running > 0 || failed > 0)) { + /* vertex is started, but not complete */ + if (failed > 0) { + reportBuffer.append(String.format("%s: %d(+%d,-%d)/%d\t", s, complete, running, failed, total)); + } else { + reportBuffer.append(String.format("%s: %d(+%d)/%d\t", s, complete, running, total)); + } + } else { + /* vertex is waiting for input/slots or complete */ + if (failed > 0) { + /* tasks finished but some failed */ + reportBuffer.append(String.format("%s: %d(-%d)/%d\t", s, complete, failed, total)); + } else { + reportBuffer.append(String.format("%s: %d/%d\t", s, complete, total)); + } + } } }