将 Dataframe 中的 spark 模式与类型 T 进行比较
Compare spark schema from Dataframe to type T
我正在尝试在编写 Spark Dataframe 时添加一些运行时类型检查,基本上我想确保 DataFrame 模式与类型 T 兼容,兼容并不意味着它必须完全相同.这是我的代码
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 兼容?
兼容我的意思是如果我执行 dataframe.as[T]
它会起作用(但我不想执行它,因为它非常昂贵)
创建一个具有相同架构的空数据框并对其调用 .as[T]
。如果可行,模式应该兼容!
我正在尝试在编写 Spark Dataframe 时添加一些运行时类型检查,基本上我想确保 DataFrame 模式与类型 T 兼容,兼容并不意味着它必须完全相同.这是我的代码
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 兼容?
兼容我的意思是如果我执行 dataframe.as[T]
它会起作用(但我不想执行它,因为它非常昂贵)
创建一个具有相同架构的空数据框并对其调用 .as[T]
。如果可行,模式应该兼容!