Apache spark org.apache.spark.SparkException:无法执行用户定义的函数(如何查找有问题的udf)

Apache spark org.apache.spark.SparkException:无法执行用户定义的函数(如何查找有问题的udf),apache-spark,Apache Spark,我正在尝试调试一个开发人员的代码,而这个开发人员不再在使用许多UDF的组织中工作,而且在使用UDF时失败了 org.apache.spark.SparkException:无法执行用户定义的 作用 但该错误仅显示有问题的udf的名称 $anonfun$1:(字符串,字符串)=>字符串 如何找到有问题的函数名?是否存在从$anonfun$1到函数名的映射?Scala DSL中的UDF没有运行时名称。考虑这一点:例如: val f = udf((_: Int) / 0) Seq(1) .toDF

我正在尝试调试一个开发人员的代码,而这个开发人员不再在使用许多UDF的组织中工作,而且在使用UDF时失败了

org.apache.spark.SparkException:无法执行用户定义的 作用

但该错误仅显示有问题的udf的名称

$anonfun$1:(字符串,字符串)=>字符串


如何找到有问题的函数名?是否存在从$anonfun$1到函数名的映射?

Scala DSL中的UDF没有运行时名称。考虑这一点:例如:

val f = udf((_: Int) / 0)
Seq(1)
  .toDF("foo")
  .select(f($"foo"))
  .show()
Spark不知道功能
f
。但是,完整堆栈跟踪揭示了
sparkeexception

Failed to execute user defined function(SqlTest$$Lambda$547/666911607: (int) => int)
org.apache.spark.SparkException: Failed to execute user defined function(SqlTest$$Lambda$547/666911607: (int) => int)
    at org.apache.spark.sql.catalyst.expressions.ScalaUDF.eval(ScalaUDF.scala:1066)
    at org.apache.spark.sql.catalyst.expressions.If.eval(conditionalExpressions.scala:63)
...
Caused by: java.lang.ArithmeticException: / by zero
    at lab.SqlTest.$anonfun$new$2(SqlTest.scala:28)
    at scala.runtime.java8.JFunction1$mcII$sp.apply(JFunction1$mcII$sp.java:23)
    at org.apache.spark.sql.catalyst.expressions.ScalaUDF.$anonfun$f$2(ScalaUDF.scala:109)
    at org.apache.spark.sql.catalyst.expressions.ScalaUDF.eval(ScalaUDF.scala:1063)

问题是,开发人员完全基于UDF(有很多UDF)编写代码,所以即使显示了原因,我仍然有问题:在所有UDF(有很多UDF)中,哪一个有问题(即使我知道原因)源文件名和行号位于堆栈跟踪中,因此在上面的示例中,故障位于UDF中,UDF在文件
SqlTest.scala
的第28行定义