【问题标题】:In a scala spark job, running in yarn, how can I fail the job so that yarn shows a Failed status在 scala spark 作业中,在纱线中运行,我怎样才能使作业失败,以便纱线显示失败状态
【发布时间】:2017-03-25 01:50:32
【问题描述】:

我的 scala spark 作业代码中有一个简单的 if 语句,如果为 false,我想停止作业并将其标记为失败。我希望 yarn UI 显示状态为失败的 spark 作业,但到目前为止我所做的一切都停止了该作业,但仅在 yarn UI 上显示为成功完成。

    if(someBoolen) {
        //context.clearAllJobs()
        //System.exit(-1)
        //etc, nothing so far, stops the job and show as failed in the yarn UI
    }

任何帮助都会很棒。

【问题讨论】:

  • 你为什么不直接throw new IllegalStateException("bad karma, abort now");

标签: scala apache-spark hadoop-yarn


【解决方案1】:

抛出异常(而不是捕获它)将导致进程失败。

if(someBoolen) {
    throw new Exception("Job failed");
}

【讨论】:

  • 可能我提交给yarn的方法不正确,但是即使抛出异常并且spark作业失败,yarn也会显示作业成功
  • @JediKid 你确定你没有在任何地方抓到它,也许是把它登录到你的主目录或其他地方?
  • 所以在玩了之后我发现这可能是我通过 spark-submit 提交工作的方式。如果我使用 --deploy-mode 集群进行部署,yarn 现在会将作业显示为失败,但如果没有设置 --deploy-mode ,它总是会说作业成功,即使它失败了。
  • 通过使用 Spark-submit 提交一个 Spark 应用程序,它运行应用程序内的所有作业。 Yarn 中的 Spark 应用程序状态只是 FINISHED 不取决于是否有失败的作业。 Yarn UI 将仅显示整个 spark 驱动程序失败或丢失的应用程序。对于失败的 spark 作业,您可以检查 Spark UI 或 Spark History Server(如果已配置)。或在 Spark 应用程序中监控作业状态。
猜你喜欢
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 2018-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-23
  • 2022-08-18
相关资源
最近更新 更多