diff options
author | Neville Li <neville@spotify.com> | 2014-07-24 14:13:00 -0700 |
---|---|---|
committer | Patrick Wendell <pwendell@gmail.com> | 2014-07-24 14:13:00 -0700 |
commit | fec641b84d37848b329bba91857240ac5b87fc54 (patch) | |
tree | 7872df770ce041d61e6cd68b8d22fa875ce6b9aa | |
parent | 323a83c5235f9289cd9526491d62365df96a429b (diff) | |
download | spark-fec641b84d37848b329bba91857240ac5b87fc54.tar.gz spark-fec641b84d37848b329bba91857240ac5b87fc54.tar.bz2 spark-fec641b84d37848b329bba91857240ac5b87fc54.zip |
SPARK-2250: show stage RDDs in UI
Author: Neville Li <neville@spotify.com>
Closes #1188 from nevillelyh/neville/ui and squashes the following commits:
d3ac425 [Neville Li] SPARK-2250: show persisted RDD in stage UI
f075db9 [Neville Li] SPARK-2035: show call stack even when description is available
-rw-r--r-- | core/src/main/scala/org/apache/spark/ui/jobs/StageTable.scala | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/core/src/main/scala/org/apache/spark/ui/jobs/StageTable.scala b/core/src/main/scala/org/apache/spark/ui/jobs/StageTable.scala index 5f45c0ced5..f8b308c981 100644 --- a/core/src/main/scala/org/apache/spark/ui/jobs/StageTable.scala +++ b/core/src/main/scala/org/apache/spark/ui/jobs/StageTable.scala @@ -18,6 +18,7 @@ package org.apache.spark.ui.jobs import scala.xml.Node +import scala.xml.Text import java.util.Date @@ -99,19 +100,30 @@ private[ui] class StageTableBase( {s.name} </a> + val cachedRddInfos = s.rddInfos.filter(_.numCachedPartitions > 0) val details = if (s.details.nonEmpty) { <span onclick="this.parentNode.querySelector('.stage-details').classList.toggle('collapsed')" class="expand-details"> - +show details - </span> - <pre class="stage-details collapsed">{s.details}</pre> + +details + </span> ++ + <div class="stage-details collapsed"> + {if (cachedRddInfos.nonEmpty) { + Text("RDD: ") ++ + // scalastyle:off + cachedRddInfos.map { i => + <a href={"%s/storage/rdd?id=%d".format(UIUtils.prependBaseUri(basePath), i.id)}>{i.name}</a> + } + // scalastyle:on + }} + <pre>{s.details}</pre> + </div> } val stageDataOption = listener.stageIdToData.get(s.stageId) // Too many nested map/flatMaps with options are just annoying to read. Do this imperatively. if (stageDataOption.isDefined && stageDataOption.get.description.isDefined) { val desc = stageDataOption.get.description - <div><em>{desc}</em></div><div>{nameLink} {killLink}</div> + <div><em>{desc}</em></div><div>{killLink} {nameLink} {details}</div> } else { <div>{killLink} {nameLink} {details}</div> } |