Skip to content

Commit f9ad00a

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. (cherry picked from commit f6da41b) Signed-off-by: Sameer Agarwal <[email protected]>
1 parent d0cb198 commit f9ad00a

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,
@@ -856,7 +860,7 @@ private[ui] class TaskPagedTable(
856860
{formatBytes(task.taskMetrics.map(_.peakExecutionMemory))}
857861
</td>
858862
{if (hasAccumulators(stage)) {
859-
accumulatorsInfo(task)
863+
<td>{accumulatorsInfo(task)}</td>
860864
}}
861865
{if (hasInput(stage)) {
862866
metricInfo(task) { m =>
@@ -912,8 +916,12 @@ private[ui] class TaskPagedTable(
912916
}
913917

914918
private def accumulatorsInfo(task: TaskData): Seq[Node] = {
915-
task.accumulatorUpdates.map { acc =>
916-
Unparsed(StringEscapeUtils.escapeHtml4(s"${acc.name}: ${acc.update}"))
919+
task.accumulatorUpdates.flatMap { acc =>
920+
if (acc.name != null && acc.update.isDefined) {
921+
Unparsed(StringEscapeUtils.escapeHtml4(s"${acc.name}: ${acc.update.get}")) ++ <br />
922+
} else {
923+
Nil
924+
}
917925
}
918926
}
919927

@@ -977,7 +985,9 @@ private object ApiHelper {
977985
"Shuffle Spill (Disk)" -> TaskIndexNames.DISK_SPILL,
978986
"Errors" -> TaskIndexNames.ERROR)
979987

980-
def hasAccumulators(stageData: StageData): Boolean = stageData.accumulatorUpdates.size > 0
988+
def hasAccumulators(stageData: StageData): Boolean = {
989+
stageData.accumulatorUpdates.exists { acc => acc.name != null && acc.value != null }
990+
}
981991

982992
def hasInput(stageData: StageData): Boolean = stageData.inputBytes > 0
983993

0 commit comments

Comments
 (0)