我正在尝试了解spark中的合并方法。
我有一个JavaRDD<String>
(由16310个字符串组成),我想将其保存在233个文件中。 (一个包含70个字符串的文件)
首先,我尝试使用trainDataFeatures.repartition(233).saveAsTextFile(outputPathTrainFeatures);
这很好,但是我不想改组数据。所以我尝试了:trainDataFeatures.coalesce(233, false).saveAsTextFile(outputPathTrainFeatures);
在这里我只得到4个输出文件。没有洗牌,但只有4!真烦人。也许有人可以帮助我解决这个问题。
答案 0 :(得分:0)
我认为这是coalesce
和repartition
之间的重点和最大的区别。
Repartition会对数据进行完整的混洗,以便能够创建那些额外的分区。合并将数据在现有分区之间移动,并避免创建新分区,并避免数据完全混乱。
基本上,合并不会为您创建额外的分区是合并的一个特征。
与重新分区相同-借助完整的数据混洗,它能够以高效的方式工作。您可能并不在乎性能,只想增加分区数而无须改组-嗯,有人以前有这个主意,而this issue here还是开放的。