簡體   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