SPARK:了解合并方法?

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

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

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

这很好用,但我不想洗牌我的数据。所以我尝试了:trainDataFeatures.coalesce(233, false).saveAsTextFile(outputPathTrainFeatures);

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


动漫人物
浏览 68回答 1
1回答

胡子哥哥

我认为这就是重点,也是coalesce和之间最大的区别repartition。Repartition 会对数据进行全面洗牌,以便能够创建这些额外的分区。Coalesce 在现有分区之间移动数据并避免创建新分区并避免完整的数据混洗。基本上,coalesce 不会为您创建额外的分区这一事实是 coalesce 的一个特性。与重新分区相同——由于完整的数据洗牌,它能够以高效的方式工作。您可能不关心性能,只想增加分区数量而不进行洗牌 - 好吧,之前有人有过这个想法,这个问题在这里仍然悬而未决。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java