Spark中會導致shuffle的運算元

2021-10-12 21:26:19 字數 1929 閱讀 9256

1、repartition類的操作:比如repartition、repartitionandsortwithinpartitions、coalesce等

2、bykey類的操作:比如reducebykey、groupbykey、sortbykey、countbykey、combinebykey、aggregatebykey、foldbykey等

3、join類的操作:比如join、cogroup等

重分割槽: 一般會shuffle,因為需要在整個集群中,對之前所有的分割槽的資料進行隨機,均勻的打亂,然後把資料放入下游新的指定數量的分區內

bykey類的操作:因為你要對乙個key,進行聚合操作,那麼肯定要保證集群中,所有節點上的,相同的key,一定是到同乙個節點上進行處理

join類的操作:兩個rdd進行join,就必須將相同join

key的資料,shuffle到同乙個節點上,然後進行相同key的兩個rdd資料的笛卡爾乘積

spark運算元:rdd鍵值轉換操作–groupbykey、reducebykey、reducebykeylocally

spark操作 aggregate、aggregatebykey 例項

spark運算元:rdd鍵值轉換操作–combinebykey、foldbykey

def coalesce(numpartitions: int, shuffle: boolean = false, partitioncoalescer: option[partitioncoalescer] = option.empty)

def repartition(numpartitions: int)(implicit ord: ordering[t] = null)

def intersection(other: rdd[t]): rdd[t]

def intersection(other: rdd[t], partitioner: partitioner)(implicit ord: ordering[t] = null): rdd[t]

def intersection(other: rdd[t], numpartitions: int): rdd[t]

def subtract(other: rdd[t], numpartitions: int): rdd[t]

def subtract(other: rdd[t], p: partitioner)(implicit ord: ordering[t] = null): rdd[t]

def subtractbykey[w: classtag](other: rdd[(k, w)]): rdd[(k, v)]

def subtractbykey[w: classtag](other: rdd[(k, w)], numpartitions: int): rdd[(k, v)]

def subtractbykey[w: classtag](other: rdd[(k, w)], p: partitioner): rdd[(k, v)]

def join[w](other: rdd[(k, w)], partitioner: partitioner): rdd[(k, (v, w))]

def join[w](other: rdd[(k, w)]): rdd[(k, (v, w))]

def join[w](other: rdd[(k, w)], numpartitions: int): rdd[(k, (v, w))]

def leftouterjoin[w](other: rdd[(k, w)]): rdd[(k, (v, option[w]))]

Spark的Shuffle過程介紹

spark的shuffle過程介紹 shuffle writer spark豐富了任務型別,有些任務之間資料流轉不需要通過shuffle,但是有些任務之間還是需要通過shuffle來傳遞資料,比如wide dependency的group by key。spark中需要shuffle輸出的map任務...

Spark的Shuffle過程介紹

spark豐富了任務型別,有些任務之間資料流轉不需要通過shuffle,但是有些任務之間還是需要通過shuffle來傳遞資料,比如wide dependency的group by key。spark中需要shuffle輸出的map任務會為每個reduce建立對應的bucket,map產生的結果會根據...

Spark 的 Shuffle過程介紹

spark豐富了任務型別,有些任務之間資料流轉不需要通過shuffle,但是有些任務之間還是需要通過shuffle來傳遞資料,比如wide dependency的group by key。spark中需要shuffle輸出的map任務會為每個reduce建立對應的bucket,map產生的結果會根據...