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)} + + ; + + + + + + + + + + + + + + + + + {sumContent} + +
RDD BlocksStorage MemoryDisk UsedActive TasksFailed TasksComplete TasksTotal TasksTask TimeInputShuffle Read + + Shuffle Write + +
+ } } private[spark] object ExecutorsPage {