ошибка при создании искры udf: схема для типа org. apache .spark. sql .DataFrame => Int не поддерживается - PullRequest
0 голосов
/ 20 апреля 2020

Изучение искры и попытка создать искру 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)

Пожалуйста, дайте мне знать, что я делаю неправильно.

Заранее спасибо.

...