spark中coalesce、repartition和partitionBy的區別
coalesce
- false:不產生 shuffle
- true:產生 shuffle
- 如果重磁區的數量大于原來的磁區數量,必須設定為 true,否則磁區數不變
- 增加磁區會把原來的磁區中的資料隨機分配給設定的磁區個數

repartition
repartition實際上就是coalesce
repartition(int n) = coalesce(int n, true),也就是說,repartition默認就實作了shuffle操作,保證了磁區時資料均勻,
在縮小磁區的時候可以使用coalesce(int n, false) ,而不是repartition(int n),這樣就避免shuffle程序
partitionBy
partitionBy屬于PairRDDFunctions 這里從rdd到PairRDDFunctions發生了隱式轉換
- partitionBy針對的是 鍵值對型別
- partitionBy會根據指定的磁區規則對資料進行重新磁區
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/300194.html
標籤:其他
