如果一个人调用 df.write.parquet(destination)
,是否保存了数据框架架构(即 StructType
信息)?
如果Parquet文件是由Spark以外的其他程序生成的,则sqlContext.read.parquet
如何找出数据框架的模式?
parquet文件在保存时会自动保留原始数据的架构。因此,如果它是火花或其他撰写/读取数据的系统,将没有区别。
如果使用一列或多列在保存时将数据划分,则这些列的数据类型会丢失(因为信息存储在文件结构中)。当阅读时,可以通过SPARK自动推断这些数据类型(当前仅支持数字数据类型和字符串)。
可以通过将spark.sql.sources.partitionColumnTypeInference.enabled
设置为false来关闭此自动推断,这将使这些列读为字符串。有关更多信息,请参见此处。