Примечание - этот пост ссылается на Spark, но не обязательно - он может применяться ко всему, что требует параметр типа (например, case class MyThing[T](t:T)
)
Я пытаюсь определить, что такое класс времени выполненияимеет общий параметр, особенно в наборе данных, чтобы выдать полезное сообщение об ошибке, я пытаюсь сделать что-то вроде:
def killIfEmpty[T](ds:Dataset[T])(implicit sparkSession:SparkSession):Unit = {
if (ds.head(1).isEmpty) {
throw new Exception(s"Dataset[${
ds.getClass.getSimpleName
}] had zero rows.")
}
}
Но, к сожалению, это нене могу показать ничего полезного, вызывая
val spark:SparkSession = ???
val emptyDs:Dataset[String] = ???
killIfEmpty[Dataset[String]](emptyDs)
Я ожидаю, что это напечатает сообщение, которое говорит:
Набор данных [String] содержит ноль строк.
Но что происходит, это приводит к:
Набор данных [Набор данных] содержит ноль строк.
Кто-нибудь знает, как получить фактическое имя класса изуниверсальный параметр?