繁体   English   中英

如何将案例 class 作为变量传递给 ScalaReflection

[英]How to pass case class as a variable into ScalaReflection

我正在尝试将案例 class 作为变量传递给 ScalaReflection 以获取架构。

我能够使用案例 class 名称成功运行代码,而当我将案例 class 分配给变量并将其传递给 ScalaReflection 时,我收到错误。

这是我的代码

import org.apache.spark.sql.catalyst.ScalaReflection
import org.apache.spark.sql.types.StructType

case class Emp (empId: Integer, empName: String)
val myschema = ScalaReflection.schemaFor[Emp].dataType.asInstanceOf[StructType]
println(myschema)

val empModel = Emp
val myschema2 = ScalaReflection.schemaFor[empModel].dataType.asInstanceOf[StructType]

Error: error: not found: type empModel
val myschema2 = ScalaReflection.schemaFor[empModel].dataType.asInstanceOf[StructType]

任何建议都是有帮助的!

类型同义词(=别名)应该用关键字type引入

type empModel = Emp
val myschema2 = ScalaReflection.schemaFor[empModel].dataType.asInstanceOf[StructType]

在 Scala 中,值和类型构成不同的命名空间。

Scala 2 中不允许带有type (和val )的顶级定义,因此它们必须位于某些 object 中

object App {
  type empModel = Emp
  val myschema2 = ScalaReflection.schemaFor[empModel].dataType.asInstanceOf[StructType]
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM