dataFrameWriter partitionBy 是否打乱数据?

Does dataFrameWriter partitionBy shuffle the data?

我以一种方式对数据进行了分区,我只想以另一种方式对其进行分区。 所以它基本上会是这样的:

sqlContext.read().parquet("...").write().partitionBy("...").parquet("...")

我想知道这是否会触发随机播放或所有数据都将在本地重新分区,因为在这种情况下,分区意味着只是 HDFS 中的一个目录,来自同一分区的数据不必位于同一节点上写在 HDFS 的同一个目录中。

parititionBybucketBy 都没有打乱数据。但在某些情况下,首先重新分区数据可能是个好主意:

df.repartition(...).write.partitionBy(...)

否则输出文件的数量受分区数 * 分区列的基数限制。