使用 parquet 格式时是否保存了 DataFrame 模式?

Is DataFrame schema saved when using parquet format?

如果调用 df.write.parquet(destination),DataFrame 架构(即 StructType 信息)是否与数据一起保存?

如果 parquet 文件是由 Spark 以外的其他程序生成的,sqlContext.read.parquet 如何找出 DataFrame 的模式?

Parquet 文件在保存时自动保留原始数据的架构。因此,writes/reads 数据是 Spark 还是其他系统都没有区别。


如果在保存时使用一个或多个列对数据进行分区,则这些列的数据类型将丢失(因为信息存储在文件结构中)。这些数据类型可以在读取时由Spark自动推断(目前只支持数字数据类型和字符串)。

可以通过将 spark.sql.sources.partitionColumnTypeInference.enabled 设置为 false 来关闭此自动推断,这将使这些列被读取为字符串。有关详细信息,请参阅 here