Sto provando a trasformare un dataframe tramite una funzione che accetta un array come parametro. Il mio codice simile a questa:Passare l'array come parametro UDF in Spark SQL
def getCategory(categories:Array[String], input:String): String = {
categories(input.toInt)
}
val myArray = Array("a", "b", "c")
val myCategories =udf(getCategory _)
val df = sqlContext.parquetFile("myfile.parquet)
val df1 = df.withColumn("newCategory", myCategories(lit(myArray), col("myInput"))
Tuttavia, illuminato non ama gli array e questo gli errori di script. Ho provato definining una nuova funzione parzialmente applicata e quindi FSU dopo che:
val newFunc = getCategory(myArray, _:String)
val myCategories = udf(newFunc)
val df1 = df.withColumn("newCategory", myCategories(col("myInput")))
questo non funziona sia come ottengo un'eccezione NullPointer e sembra myArray non viene riconosciuta. Qualche idea su come passare un array come parametro per una funzione con un dataframe?
In una nota a parte, qualsiasi spiegazione sul perché fare qualcosa di semplice come utilizzare una funzione su un dataframe è così complicata (definire la funzione, ridefinirla come UDF, ecc. Ecc.)?