I have many HIVE tables, and I want wrap query by trait.
trait Trait1 {
type DT <: Product
val SCHEMA = org.apache.spark.sql.catalyst.ScalaReflection.schemaFor[DT].dataType.asInstanceOf[org.apache.spark.sql.types.StructType]
}
object O1 extends Trait1 {
case class o1_info(gameId:Int, logdate:String)
override type DT = o1_info
}
// TETS: println(O1.SCHEMA)
got compile error:
Error:(11, 73) No TypeTag available for Trait1.this.DT ......
Error:(11, 73) not enough arguments for method schemaFor: (implicit evidence$5: org.apache.spark.sql.catalyst.ScalaReflection.universe.TypeTag[Trait1.this.DT])org.apache.spark.sql.catalyst.ScalaReflection.Schema. Unspecified value parameter evidence$5.
Can you help me? Thanks
Try to introduce an abstract member for
TypeTag
, resolve it as implicit parameter inschemaFor
call manually, and makeSCHEMA
lazy val.