Skip to content

Commit f6da41b

Browse files
Marcelo Vanzinsameeragarwal
authored andcommitted
[SPARK-23135][UI] Fix rendering of accumulators in the stage page.
This follows the behavior of 2.2: only named accumulators with a value are rendered. Screenshot: ![accs](https://user-images.githubusercontent.com/1694083/35065700-df409114-fb82-11e7-87c1-550c3f674371.png) Author: Marcelo Vanzin <[email protected]> Closes #20299 from vanzin/SPARK-23135.
1 parent aa3a127 commit f6da41b

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

core/src/main/scala/org/apache/spark/ui/jobs/StagePage.scala

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,11 @@ private[ui] class StagePage(parent: StagesTab, store: AppStatusStore) extends We
260260

261261
val accumulableHeaders: Seq[String] = Seq("Accumulable", "Value")
262262
def accumulableRow(acc: AccumulableInfo): Seq[Node] = {
263-
<tr><td>{acc.name}</td><td>{acc.value}</td></tr>
263+
if (acc.name != null && acc.value != null) {
264+
<tr><td>{acc.name}</td><td>{acc.value}</td></tr>
265+
} else {
266+
Nil
267+
}
264268
}
265269
val accumulableTable = UIUtils.listingTable(
266270
accumulableHeaders,
@@ -864,7 +868,7 @@ private[ui] class TaskPagedTable(
864868
{formatBytes(task.taskMetrics.map(_.peakExecutionMemory))}
865869
</td>
866870
{if (hasAccumulators(stage)) {
867-
accumulatorsInfo(task)
871+
<td>{accumulatorsInfo(task)}</td>
868872
}}
869873
{if (hasInput(stage)) {
870874
metricInfo(task) { m =>
@@ -920,8 +924,12 @@ private[ui] class TaskPagedTable(
920924
}
921925

922926
private def accumulatorsInfo(task: TaskData): Seq[Node] = {
923-
task.accumulatorUpdates.map { acc =>
924-
Unparsed(StringEscapeUtils.escapeHtml4(s"${acc.name}: ${acc.update}"))
927+
task.accumulatorUpdates.flatMap { acc =>
928+
if (acc.name != null && acc.update.isDefined) {
929+
Unparsed(StringEscapeUtils.escapeHtml4(s"${acc.name}: ${acc.update.get}")) ++ <br />
930+
} else {
931+
Nil
932+
}
925933
}
926934
}
927935

@@ -985,7 +993,9 @@ private object ApiHelper {
985993
"Shuffle Spill (Disk)" -> TaskIndexNames.DISK_SPILL,
986994
"Errors" -> TaskIndexNames.ERROR)
987995

988-
def hasAccumulators(stageData: StageData): Boolean = stageData.accumulatorUpdates.size > 0
996+
def hasAccumulators(stageData: StageData): Boolean = {
997+
stageData.accumulatorUpdates.exists { acc => acc.name != null && acc.value != null }
998+
}
989999

9901000
def hasInput(stageData: StageData): Boolean = stageData.inputBytes > 0
9911001

0 commit comments

Comments
 (0)