我使用IntelliJ IDEA来执行下面显示的代码。 df
的内容如下:
+------+------+
|nodeId| p_i|
+------+------+
| 26|0.6914|
| 29|0.6914|
| 474| 0.0|
| 65|0.4898|
| 191|0.4445|
| 418|0.4445|
运行此代码时,我在行result.show()
处收到任务序列化错误:
class MyUtils extends Serializable {
def calculate(spark: SparkSession,
df: DataFrame): DataFrame = {
def myFunc(a: Double): String = {
var result: String = "-"
if (a > 1) {
result = "A"
}
return result
}
val myFuncUdf = udf(myFunc _)
val result = df.withColumn("role", myFuncUdf(df("a")))
result.show()
result
}
}
为什么我会收到此错误?
更新
这就是我运行代码的方式:
object Processor extends App {
// ...
val mu = new MyUtils()
var result = mu.calculate(spark, df)
}
答案 0 :(得分:0)
我必须将extends Serializable
添加到类MyUtils
的规范中。