Github user skonto commented on a diff in the pull request:
https://github.com/apache/spark/pull/22381#discussion_r216476831
--- Diff:
core/src/main/scala/org/apache/spark/status/AppStatusListener.scala ---
@@ -382,11 +392,37 @@ private[spark] class AppStatusListener(
}
job.status = event.jobResult match {
- case JobSucceeded => JobExecutionStatus.SUCCEEDED
- case JobFailed(_) => JobExecutionStatus.FAILED
+ case JobSucceeded =>
+ appStatusSource.foreach{_.SUCCEEDED_JOBS.inc(1)}
+ JobExecutionStatus.SUCCEEDED
+ case JobFailed(_) =>
+ appStatusSource.foreach{_.FAILED_JOBS.inc(1)}
+ JobExecutionStatus.FAILED
}
job.completionTime = if (event.time > 0) Some(new Date(event.time))
else None
+
+ for {
+ submissionTime <- job.submissionTime
+ completionTime <- job.completionTime
+ } yield {
+ val localSubmissionTime =
+ LocalDateTime.ofInstant(submissionTime.toInstant,
ZoneId.systemDefault)
+ val localCompletionTime =
+ LocalDateTime.ofInstant(completionTime.toInstant,
ZoneId.systemDefault)
+ val duration = Duration.between(localCompletionTime,
localSubmissionTime)
+ appStatusSource.foreach{_.JOB_DURATION.update(duration.toMillis)}
--- End diff --
Actually I will transform it to gauge makes more sense.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]