有没有办法在 yarn 上获取 spark 作业 运行 的尝试次数

Is there a way to get the attempt number of a spark job running on yarn

我想知道是否有办法以编程方式在 yarn 上获取 spark 作业 运行 的尝试次数。

我已经尝试将 SparkListenerApplicationStart 与此侦听器一起使用,并在启动 spark-submit 时注册它

class Listner extends SparkListener{
  var att = ""
  override def onApplicationStart(applicationStart: SparkListenerApplicationStart): Unit = {
    att = applicationStart.appAttemptId.getOrElse("")
    println(s"--------------------------------------$att------------------------------------------------")
  }

然而 att 总是空的。

我找到了问题的解决方案:

    val yc = YarnClient.createYarnClient()
    yc.init(spark.sparkContext.hadoopConfiguration)
    yc.start()
    val id = ApplicationId.fromString(spark.sparkContext.applicationId)
    val attempts = yc.getApplicationAttempts(id)