Spark Cast中的Class.forName

时间:2019-01-24 16:42:30

标签: scala apache-spark reflection

我有一个看起来像这样的函数:

private def readDS[T <: Product : TypeTag](path: String): Dataset[T] = {
    spark
       .read
       .csv(path)
       .as[T]
}

T 始终是案例类

我正在尝试使用

CC = Class.forName(“ SomeCaseClass”) //其中CC(案例类)应作为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功能中。

0 个答案:

没有答案