scala Apache Zeppelin未显示完整堆栈跟踪

wsewodh2  于 2023-04-06  发布在  Scala
关注(0)|答案(1)|浏览(145)

我有下面的段落,使用InterQuartileRange方法进行了一些异常值检测,奇怪的是它运行时出错,但Apache Zeppelin将其截断以使其有用。
下面是代码:

def interQuartileRangeFiltering(df: DataFrame): DataFrame = {
    @tailrec
    def inner(cols: Seq[String], acc: DataFrame): DataFrame = cols match {
      case Nil          => acc
      case column :: xs =>
        val quantiles = acc.stat.approxQuantile(column, Array(0.25, 0.75), 0.0) // TODO: values should come from config
        val q1 = quantiles(0)
        val q3 = quantiles(1)
        val iqr = q1 - q3
        val lowerRange = q1 - 1.5 * iqr
        val upperRange = q3 + 1.5 * iqr
        inner(xs, acc.filter(s"$column < $lowerRange or value > $upperRange"))
    }
    inner(df.columns.toSeq, df)
  }

以下是在Apache Zeppelin中运行时的错误:

scala.MatchError: WrappedArray(NEAR BAY, ISLAND, NEAR OCEAN, housing_median_age, population, total_bedrooms, <1H OCEAN, median_house_value, longitude, INLAND, latitude, total_rooms, households, median_income) (of class scala.collection.mutable.WrappedArray$ofRef)
  at inner$1(<console>:74)
  at interQuartileRangeFiltering(<console>:85)
  ... 56 elided

我确实验证了spark解释器中的相应设置为true:
zeppelin.spark.printREPLOutput
我的方法有什么问题吗?如何让Apache Zeppelin打印整个堆栈跟踪,以便我可以找出实际问题是什么?

sdnqo3pr

sdnqo3pr1#

作为一种解决方法,您可以通过下一个片段查看完整的堆栈跟踪:

lastException.printStackTrace(System.out)

您也可以使用try/catch Package 代码来执行相同的操作。

try {
    // code
} catch {
    case e: Throwable => e.printStackTrace(System.out)
}

相关问题