将Dataframe中的Spark模式与类型T进行比较

3

我试图在编写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个回答

2

创建一个与原架构相同的空数据框,然后在其上调用.as[T]方法。如果成功,架构应该是兼容的!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接