将来自Dataframe的spark模式与T

时间:2017-10-25 18:20:13

标签: 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"Unable to save schemas don't match")

        dataframe.write.parquet(url)
      }

目前我正在检查模式是否等于,我怎么能检查它们是否与T类型兼容?

兼容我的意思是如果我执行dataframe.as[T]它会起作用(但我不想执行它,因为它非常昂贵)

1 个答案:

答案 0 :(得分:2)

使用相同的架构创建一个空数据框并在其上调用.as[T]。如果它工作,架构应该是兼容的!