[英]scala how to parameterized case class, and pass the case class variable to [T <: Product: TypeTag]
[英]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.