Ich versuche UDF zu erstellen mit dem unter scala CodeUDF - Aufgabe nicht serializable Ausnahme
lazy val formattedDF = df.withColumn("result_col", validateudf(df("id")))
val validateudf = udf((id: Int) => {
if(id == 1){
"ID IS EQUAL TO 1"
}
else if(id > 1){
validateId(id)
}
else{
"NO VALID RECORDS"
}
})
def validateId(id:Int) : String = {
if (id > 2) {
"ID IS GREATER THAN 2"
}
else {
"VALID RECORDS"
}
}
Wenn ich diesen Code ausführen, erhalte ich Aufgabe nicht serializable Ausnahme.
Irgendwelche Ideen? Vielen Dank.
Wir brauchen mehr Details über Ausnahme - Stacktrace und etc –
Exception in thread "main" org.apache.spark.SparkException: Aufgabe nicht serializable \t bei org.apache .spark.util.ClosureCleaner $ .ensureSerializable (ClosureCleaner.scala: 298) \t bei org.apache.spark.util.ClosureCleaner $ .org $ apache $ func $ util $ ClosureCleaner $$ sauber (ClosureCleaner.scala: 288) – user7693121
Ist es voller Code? Es scheint, dass Sie in Ihrem Code etwas geschlossen haben. Wenn Sie UDF verwenden, sollten Sie beim Schließen vorsichtig sein. –