Próbuję przekształcić ramkę danych za pomocą funkcji, która pobiera tablicę jako parametr. Mój kod wygląda mniej więcej tak:Prześlij tablicę jako parametr UDF w 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"))
Jednak podświetlony nie lubi tablic i błędów tego skryptu. Próbowałem definining nową funkcję częściowo zastosowanie i potem UDF potem:
val newFunc = getCategory(myArray, _:String)
val myCategories = udf(newFunc)
val df1 = df.withColumn("newCategory", myCategories(col("myInput")))
To nie działa albo jak uzyskać wyjątek NullPointer i wydaje myArray nie jest rozpoznawane. Jakieś pomysły dotyczące przekazywania tablicy jako parametru do funkcji z ramką danych?
Oddzielnie, każde wyjaśnienie, dlaczego robienie czegoś prostego, jak korzystanie z funkcji na ramce danych, jest tak skomplikowane (zdefiniować funkcję, przedefiniować ją jako UDF itp.)?