I am trying to return a map from the UDF with in if else and getting the below exception , Any pointers please ?
java.lang.UnsupportedOperationException: Schema for type Any is not supported
import org.apache.spark.sql.functions.{col, udf}
import org.apache.spark.sql.functions._
val df2 = Seq(
("1", Map("Fld1" -> "USA","Fld2" -> "UK")),
("2", Map("Fld1" -> "Germany", "Fld2" -> "Portugal")),
("3", Map("Fld1" -> "France", "Fld2" -> "Paris"))
).toDF("id", "map")
val getmapUdf = udf((map1: Map[String, String]) => {
val fl1 = map1.getOrElse("Fld1","unknown")
val fl2 = map1.getOrElse("Fld2","unknown")
if (fl1 =="Germany")
{
Map("key1" -> "G")
}
else if(fl1 =="France")
{
if (fl2 =="UK")
{
Map("key1" ->"U")
}
else
{
Map("key1" ->"Y")
}
}
else if(fl1 =="France")
{
Map("key1" ->"G")
}
})
var temp2 = df2.withColumn("mymap", getmapUdf($"map"))
temp2.show(false)