我以一种方式对数据进行分区,我只想将其分配给另一种方式。 所以它基本上会是这样的:
sqlContext.read().parquet("...").write().partitionBy("...").parquet("...")
我想知道这是否会触发随机播放或所有数据都将在本地重新分区,因为在此上下文中,分区仅表示HDFS中的目录,而来自同一分区的数据不必位于同一节点上写在HDFS的同一个目录中。
答案 0 :(得分:5)
parititionBy
和bucketBy
都没有随机播放数据。但是,有些情况下,首先重新分区数据可能是一个好主意:
df.repartition(...).write.partitionBy(...)
否则输出文件的数量受分区列数*分区列的基数限制。