Изучение искры и попытка создать искру udf.
Создана функция, как показано ниже, чтобы получить счетчик данных, который работает нормально.
def fn_hive_table_upd(df:org.apache.spark.sql.DataFrame): Int = {
val cnt = df.count;
return cnt.toInt;
}
Затем при попытке зарегистрируйте udf, как показано ниже, это дает ошибку. Возвращаемая переменная - Int (примитив).
spark.udf.register("udf_hive_table_upd", fn_hive_table_upd _);
Ошибка:
Name: java.lang.UnsupportedOperationException
Message: Schema for type org.apache.spark.sql.DataFrame => Int is not supported
StackTrace: at org.apache.spark.sql.catalyst.ScalaReflection$$anonfun$schemaFor$1.apply(ScalaReflection.scala:780)
at org.apache.spark.sql.catalyst.ScalaReflection$$anonfun$schemaFor$1.apply(ScalaReflection.scala:715)
at scala.reflect.internal.tpe.TypeConstraints$UndoLog.undo(TypeConstraints.scala:56)
at org.apache.spark.sql.catalyst.ScalaReflection$class.cleanUpReflectionObjects(ScalaReflection.scala:824)
at org.apache.spark.sql.catalyst.ScalaReflection$.cleanUpReflectionObjects(ScalaReflection.scala:39)
at org.apache.spark.sql.catalyst.ScalaReflection$.schemaFor(ScalaReflection.scala:714)
at org.apache.spark.sql.catalyst.ScalaReflection$.schemaFor(ScalaReflection.scala:711)
at org.apache.spark.sql.UDFRegistration.register(UDFRegistration.scala:188)
Пожалуйста, дайте мне знать, что я делаю неправильно.
Заранее спасибо.