dataFrameWriter partitionBy是否会对数据进行洗牌?

时间:2016-10-01 10:42:41

标签: apache-spark hadoop apache-spark-sql hdfs partitioning

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

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

我想知道这是否会触发随机播放或所有数据都将在本地重新分区,因为在此上下文中,分区仅表示HDFS中的目录,而来自同一分区的数据不必位于同一节点上写在HDFS的同一个目录中。

1 个答案:

答案 0 :(得分:5)

parititionBybucketBy都没有随机播放数据。但是,有些情况下,首先重新分区数据可能是一个好主意:

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

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