我正在嘗試了解 spark 中的 coalesce 方法。我有一個JavaRDD<String>(由 16310 個字符串組成),我想將它保存在 233 個文件中。(一個文件有 70 個字符串)首先,我嘗試了trainDataFeatures.repartition(233).saveAsTextFile(outputPathTrainFeatures);這很好用,但我不想洗牌我的數(shù)據(jù)。所以我嘗試了:trainDataFeatures.coalesce(233, false).saveAsTextFile(outputPathTrainFeatures);在這里我只有 4 個輸出文件。沒有洗牌,但只有 4 個?。?!這真的很煩人。也許有人可以幫我解決這個問題。
1 回答
胡子哥哥
TA貢獻1825條經(jīng)驗 獲得超6個贊
我認(rèn)為這就是重點,也是coalesce和之間最大的區(qū)別repartition。
Repartition 會對數(shù)據(jù)進行全面洗牌,以便能夠創(chuàng)建這些額外的分區(qū)。Coalesce 在現(xiàn)有分區(qū)之間移動數(shù)據(jù)并避免創(chuàng)建新分區(qū)并避免完整的數(shù)據(jù)混洗。
基本上,coalesce 不會為您創(chuàng)建額外的分區(qū)這一事實是 coalesce 的一個特性。
與重新分區(qū)相同——由于完整的數(shù)據(jù)洗牌,它能夠以高效的方式工作。您可能不關(guān)心性能,只想增加分區(qū)數(shù)量而不進行洗牌 - 好吧,之前有人有過這個想法,這個問題在這里仍然懸而未決。
添加回答
舉報
0/150
提交
取消
