我正在嘗試了解 spark 中的 coalesce 方法。我有一個(gè)JavaRDD<String>(由 16310 個(gè)字符串組成),我想將它保存在 233 個(gè)文件中。(一個(gè)文件有 70 個(gè)字符串)首先,我嘗試了trainDataFeatures.repartition(233).saveAsTextFile(outputPathTrainFeatures);這很好用,但我不想洗牌我的數(shù)據(jù)。所以我嘗試了:trainDataFeatures.coalesce(233, false).saveAsTextFile(outputPathTrainFeatures);在這里我只有 4 個(gè)輸出文件。沒有洗牌,但只有 4 個(gè)?。?!這真的很煩人。也許有人可以幫我解決這個(gè)問題。
1 回答

胡子哥哥
TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超6個(gè)贊
我認(rèn)為這就是重點(diǎn),也是coalesce
和之間最大的區(qū)別repartition
。
Repartition 會對數(shù)據(jù)進(jìn)行全面洗牌,以便能夠創(chuàng)建這些額外的分區(qū)。Coalesce 在現(xiàn)有分區(qū)之間移動數(shù)據(jù)并避免創(chuàng)建新分區(qū)并避免完整的數(shù)據(jù)混洗。
基本上,coalesce 不會為您創(chuàng)建額外的分區(qū)這一事實(shí)是 coalesce 的一個(gè)特性。
與重新分區(qū)相同——由于完整的數(shù)據(jù)洗牌,它能夠以高效的方式工作。您可能不關(guān)心性能,只想增加分區(qū)數(shù)量而不進(jìn)行洗牌 - 好吧,之前有人有過這個(gè)想法,這個(gè)問題在這里仍然懸而未決。
添加回答
舉報(bào)
0/150
提交
取消