Я работаю в Scala и искру sql, где я хочу вызвать UDF, который принимает несколько аргументов. Я не могу понять, что не так с моим вызовом
udf:
private def parseJsonUdf: UserDefinedFunction = udf(parseJson _)
def parseJson (json: org.json.JSONObject, arg1: String, arg2: String = ""): String = {
***
}
Я вызываю его таким образом, здесь поля - это Seq [String], а столбец данных содержит json строка
for(field <- fields){
df.withColumn(field, parseJsonUdf(col("data"), lit(field)))
}
Вероятно, я не знаю, как передать строку как JSONOBJECT внутри udf или что-то еще. Я получаю следующую ошибку времени выполнения:
java.lang.ClassCastException: ********$$parseJsonUdf$1 cannot be cast to scala.Function2
at org.apache.spark.sql.catalyst.expressions.ScalaUDF.<init>(ScalaUDF.scala:107)
at org.apache.spark.sql.expressions.UserDefinedFunction.apply(UserDefinedFunction.scala:71)
Как мне заставить его работать?