每个分区文件是否包含 Spark DataFrameWriter.partitionBy 之后的所有行?

问题描述 投票:0回答:1

在Spark数据管道中,我想依赖mapPartitions来运行一些计算。我准备一些数据并希望使用 DataFrameWriter.partitionBy 将其存储在分区中。

是否保证每个分区都包含所有列?鉴于 Parquet 的柱状性质,我对是否可以相信每个 Parquet 文件实际上包含完整的列集感到有点困惑。小数据集似乎就是这种情况,但我可以相信它是这种情况吗?

apache-spark pyspark parquet
1个回答
0
投票

简单来说,是的。事实上,从模式评估的角度来看,这可能是一个问题,即您编写 a、b、c,然后附加 a、b、c、d、e。如果不启用 mergeSchema 并且首先读取具有 a、b、c 的分区,则可能会导致可用列的不可预测性。 这个堆栈有大量信息。

如果您可以使用 delta,它将提供一种更强大的方式来添加列(或在更高版本中重命名等)、读取文件(由于“块”列表存储在事务日志中,因此速度要快几个数量级 - 无需目录扫描必需)以及通过更改提要等修改内容的能力。

© www.soinside.com 2019 - 2024. All rights reserved.