我尝试使用 pyspark 中的 Scala udfs 并遇到“pyspark.sql.utils.AnalysisException:UDF 类未实现任何 UDF 接口”错误
我的 scala 代码看起来像这样
package com.spark.udfexample
Object test{
case class (a: Option[String], b: Option[String])
val foo: StructType = new StructType().add("a", StringType).add("b", StringType)
def udf1:UserDefinedFunction = udf((param: String, param: Seq[Row])) {
...
...
}
..
.
}
我将此对象类打包为 jar 并传递到 pyspark 上下文。
spark.udf.registerJavaFunction("udf1", "com.spark.udfexample.test")
- 在这里遇到错误,有人可以帮忙吗?谢谢
我建议您查看这篇博客文章,因为它详细说明了您收到该错误的原因。
您的伪代码看起来是 scala udf 的设置,甚至可能使用类状态,而 python 接口正在寻找的是实现 UDFx 接口的无参数公共类。
如果您可以在 scala Spark 中成功注册实际的 scala udf 函数(并使用它),那么您可以在对象中创建一个函数以通过 scala 注册它并在 python 代码中调用它。