diff --git a/core/src/main/scala/org/apache/spark/ui/exec/ExecutorsPage.scala b/core/src/main/scala/org/apache/spark/ui/exec/ExecutorsPage.scala
index 7072a152d6b69..440dfa2679563 100644
--- a/core/src/main/scala/org/apache/spark/ui/exec/ExecutorsPage.scala
+++ b/core/src/main/scala/org/apache/spark/ui/exec/ExecutorsPage.scala
@@ -62,9 +62,6 @@ private[ui] class ExecutorsPage(
}
(_storageStatusList, _execInfo)
}
- val maxMem = storageStatusList.map(_.maxMem).sum
- val memUsed = storageStatusList.map(_.memUsed).sum
- val diskUsed = storageStatusList.map(_.diskUsed).sum
val execInfoSorted = execInfo.sortBy(_.id)
val logsExist = execInfo.filter(_.executorLogs.nonEmpty).nonEmpty
@@ -100,18 +97,15 @@ private[ui] class ExecutorsPage(
val content =
-
+
-
- - Memory:
- {Utils.bytesToString(memUsed)} Used
- ({Utils.bytesToString(maxMem)} Total)
- - Disk: {Utils.bytesToString(diskUsed)} Used
-
+
Totals for {execInfo.size} Executors
+ {execSummary(execInfo)}
+
Active Executors
{execTable}
;
@@ -179,6 +173,66 @@ private[ui] class ExecutorsPage(
}
+ private def execSummary(execInfo: Seq[ExecutorSummary]): Seq[Node] = {
+ val maximumMemory = execInfo.map(_.maxMemory).sum
+ val memoryUsed = execInfo.map(_.memoryUsed).sum
+ val diskUsed = execInfo.map(_.diskUsed).sum
+ val totalDuration = execInfo.map(_.totalDuration).sum
+ val totalInputBytes = execInfo.map(_.totalInputBytes).sum
+ val totalShuffleRead = execInfo.map(_.totalShuffleRead).sum
+ val totalShuffleWrite = execInfo.map(_.totalShuffleWrite).sum
+
+ val sumContent =
+
+ {execInfo.map(_.rddBlocks).sum} |
+
+ {Utils.bytesToString(memoryUsed)} /
+ {Utils.bytesToString(maximumMemory)}
+ |
+
+ {Utils.bytesToString(diskUsed)}
+ |
+ {execInfo.map(_.activeTasks).sum} |
+ {execInfo.map(_.failedTasks).sum} |
+ {execInfo.map(_.completedTasks).sum} |
+ {execInfo.map(_.totalTasks).sum} |
+
+ {Utils.msDurationToString(totalDuration)}
+ |
+
+ {Utils.bytesToString(totalInputBytes)}
+ |
+
+ {Utils.bytesToString(totalShuffleRead)}
+ |
+
+ {Utils.bytesToString(totalShuffleWrite)}
+ |
+
;
+
+
+
+ RDD Blocks |
+ Storage Memory |
+ Disk Used |
+ Active Tasks |
+ Failed Tasks |
+ Complete Tasks |
+ Total Tasks |
+ Task Time |
+ Input |
+ Shuffle Read |
+
+
+ Shuffle Write
+
+ |
+
+
+ {sumContent}
+
+
+ }
}
private[spark] object ExecutorsPage {