SparkParquet地板隔断,可移除隔断柱

rkkpypqq  于 2021-07-12  发布在  Spark
关注(0)|答案(2)|浏览(244)

如果我使用 df.write.partitionby(col1).parquet(path) .
数据将删除数据上的分区列。
如何避免?

jgovgodb

jgovgodb1#

你可以复制 col1 写作前:

df.withColumn("partition_col", col("col1")).write.partitionBy("partition_col").parquet(path)

请注意,这一步其实不是必需的,因为每当您读取分区目录结构中的Parquet文件时,spark都会自动将其作为新列添加到dataframe中。

uujelgoq

uujelgoq2#

实际上spark并不删除该列,但它使用该列来组织文件,这样当您读取文件时,它会将该列添加为一列,并以表格格式显示给您。如果您检查表的模式或Dataframe的模式,您仍会将其视为表中的一列。
另外,您正在对数据进行分区,以便了解如何频繁地查询表中的数据,并且基于这些信息,您可能已经决定对数据进行分区,以便您的读取变得更快、更高效。

相关问题