Scala 将数据帧中的spark模式与类型T进行比较
我试图在编写Spark Dataframe时添加一些运行时类型检查,基本上我想确保Dataframe模式与类型T兼容,兼容并不意味着它必须完全相同。这是我的密码Scala 将数据帧中的spark模式与类型T进行比较,scala,apache-spark,apache-spark-sql,spark-dataframe,Scala,Apache Spark,Apache Spark Sql,Spark Dataframe,我试图在编写Spark Dataframe时添加一些运行时类型检查,基本上我想确保Dataframe模式与类型T兼容,兼容并不意味着它必须完全相同。这是我的密码 def save[T: Encoder](dataframe: DataFrame, url: String): Unit = { val encoder = implicitly[Encoder[T]] assert(dataframe.schema == encoder.schema, s"Unabl
def save[T: Encoder](dataframe: DataFrame, url: String): Unit = {
val encoder = implicitly[Encoder[T]]
assert(dataframe.schema == encoder.schema, s"Unable to save schemas don't match")
dataframe.write.parquet(url)
}
目前我正在检查模式是否相等,如何检查它们是否与T类型兼容
对于compatible,我的意思是,如果我执行
dataframe.as[T]
,它就会工作(但我不想执行它,因为它非常昂贵)使用相同的模式创建一个空的dataframe,并在其上调用.as[T]
。如果它工作的模式应该是兼容的