У меня есть функция, которая выглядит так:
private def readDS[T <: Product : TypeTag](path: String): Dataset[T] = {
spark
.read
.csv(path)
.as[T]
}
T всегда является классом дела
Я пытаюсь получить T, используя
CC = Class.forName ("SomeCaseClass") // где CC (Case Class) должен быть передан как T в функцию readDS, с которой у меня проблема
У меня была идея сделать что-то вроде этого:
CC match {
case VALIDCC // check if VALIDCC is a subtype of Product and TypeTag[VALIDCC] is available // => {
readDS[VALIDCC]("/path/to/file")
}
case _ => logger.error("provided class can't be used to cast a DF")
Но я понятия не имею, как сопоставлять типы в scala, а также как проверить, является ли тип подтипом Product, и если неявный val tt = TypeTag [CC] доступен в области применения CC в функции readDS.