Skip to content

Commit 8f88222

Browse files
committed
Added job/stage description
1 parent aeed4b1 commit 8f88222

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

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

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,21 @@ private[ui] class AllJobsPage(parent: JobsTab) extends WebUIPage("") {
3131
private val startTime: Option[Long] = parent.sc.map(_.startTime)
3232
private val listener = parent.listener
3333

34+
private def getlastStageDescription(job: JobUIData) = {
35+
val lastStageInfo = Option(job.stageIds)
36+
.filter(_.nonEmpty)
37+
.flatMap { ids => listener.stageIdToInfo.get(ids.max)}
38+
val lastStageData = lastStageInfo.flatMap { s =>
39+
listener.stageIdToData.get((s.stageId, s.attemptId))
40+
}
41+
lastStageData.flatMap(_.description).getOrElse("")
42+
}
43+
3444
private def applicationTimelineView(jobs: Seq[JobUIData], now: Long): Seq[Node] = {
3545
val jobEventJsonAsStrSeq = jobs.flatMap { jobUIData =>
3646
val jobId = jobUIData.jobId
3747
val status = jobUIData.status
48+
val jobDescription = getlastStageDescription(jobUIData)
3849
val submissionTimeOpt = jobUIData.submissionTime
3950
val completionTimeOpt = jobUIData.completionTime
4051

@@ -58,8 +69,8 @@ private[ui] class AllJobsPage(parent: JobsTab) extends WebUIPage("") {
5869
| 'group': 'jobs',
5970
| 'start': new Date(${submissionTime}),
6071
| 'end': new Date(${completionTime}),
61-
| 'content': '<div class="application-timeline-content">Job ${jobId}</div>',
62-
| 'title': 'Job ${jobId}\\nStatus: ${status}\\n' +
72+
| 'content': '<div class="application-timeline-content">${jobDescription} (Job ${jobId})</div>',
73+
| 'title': '${jobDescription} (Job ${jobId})\\nStatus: ${status}\\n' +
6374
| 'Submission Time: ${UIUtils.formatDate(new Date(submissionTime))}' +
6475
| '${
6576
if (status != JobExecutionStatus.RUNNING) {
@@ -70,7 +81,7 @@ private[ui] class AllJobsPage(parent: JobsTab) extends WebUIPage("") {
7081
}'
7182
|}
7283
""".stripMargin
73-
Option(jobEventJsonAsStr)
84+
Some(jobEventJsonAsStr)
7485
}
7586

7687
val executorEventJsonAsStrSeq =
@@ -169,7 +180,7 @@ private[ui] class AllJobsPage(parent: JobsTab) extends WebUIPage("") {
169180
}
170181

171182
val lastStageName = lastStageInfo.map(_.name).getOrElse("(Unknown Stage Name)")
172-
val lastStageDescription = lastStageData.flatMap(_.description).getOrElse("")
183+
val lastStageDescription = getlastStageDescription(job)// lastStageData.flatMap(_.description).getOrElse("")
173184
val duration: Option[Long] = {
174185
job.submissionTime.map { start =>
175186
val end = job.completionTime.getOrElse(System.currentTimeMillis())

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ private[ui] class JobPage(parent: JobsTab) extends WebUIPage("job") {
3636
val stageEventJsonAsStrSeq = stages.map { stage =>
3737
val stageId = stage.stageId
3838
val attemptId = stage.attemptId
39+
val name = stage.name
3940
val status = {
4041
if (stage.completionTime.isDefined) {
4142
if (stage.failureReason.isDefined) {
@@ -57,8 +58,8 @@ private[ui] class JobPage(parent: JobsTab) extends WebUIPage("job") {
5758
| 'group': 'stages',
5859
| 'start': new Date(${submissionTime}),
5960
| 'end': new Date(${completionTime}),
60-
| 'content': '<div class="job-timeline-content">Stage ${stageId}.${attemptId}</div>',
61-
| 'title': 'Stage ${stageId}.${attemptId}\\nStatus: ${status.toUpperCase}\\n' +
61+
| 'content': '<div class="job-timeline-content">${name} (Stage ${stageId}.${attemptId})</div>',
62+
| 'title': '${name} (Stage ${stageId}.${attemptId})\\nStatus: ${status.toUpperCase}\\n' +
6263
| 'Submission Time: ${UIUtils.formatDate(new Date(submissionTime))}' +
6364
| '${
6465
if (status != "running") {

0 commit comments

Comments
 (0)