为什么当 Scala Spark 应用抛出异常时 AWS EMR 步骤不会失败

Why AWS EMR step is not failed when exception from Scala Spark app thrown

我在主要方法中有nect代码:

 try {
      tappSparkEngine.process();
    }catch{
      case e: Exception => LOG.error(e.toString)
              throw e
    }

有一种情况会抛出异常并记录在日志中:

2018-04-02 03:05:04 ERROR TappSparkApp$:55 - java.lang.Exception: Midnight points are missed when expected

这是日志中的最后一条记录。 但是 EMR 作业步骤不是失败状态,而是完成状态。为什么这样?以及如何让它失败?

  1. Return 来自您程序的 non-zero 值。

    例如:在Java

    system.exit(-1)

    下面link,程序员在python
    中做同样的事情 https://aws.amazon.com/blogs/big-data/submitting-user-applications-with-spark-submit/

  2. 尝试将异常包装在 org.apache.spark.SparkException