SPARK:了解合并方法吗?

时间:2019-07-09 13:00:43

标签: java apache-spark coalesce

我正在尝试了解spark中的合并方法。

我有一个JavaRDD<String>(由16310个字符串组成),我想将其保存在233个文件中。 (一个包含70个字符串的文件)

首先,我尝试使用trainDataFeatures.repartition(233).saveAsTextFile(outputPathTrainFeatures);

这很好,但是我不想改组数据。所以我尝试了:trainDataFeatures.coalesce(233, false).saveAsTextFile(outputPathTrainFeatures);

在这里我只得到4个输出文件。没有洗牌,但只有4!真烦人。也许有人可以帮助我解决这个问题。

1 个答案:

答案 0 :(得分:0)

我认为这是coalescerepartition之间的重点和最大的区别。

Repartition会对数据进行完整的混洗,以便能够创建那些额外的分区。合并将数据在现有分区之间移动,并避免创建新分区,并避免数据完全混乱。

基本上,合并不会为您创建额外的分区是合并的一个特征。

与重新分区相同-借助完整的数据混洗,它能够以高效的方式工作。您可能并不在乎性能,只想增加分区数而无须改组-嗯,有人以前有这个主意,而this issue here还是开放的。