0
我需要了解Spark如何洗牌。無序洗牌是BYKEY操作中的性能開銷。一般來說,對於RDD來說,如何進行混洗以及配對RDD或加入混洗將會發生。如果你可以用RDD和RDD中的例子來解釋,那就太好了。火花洗牌
我需要了解Spark如何洗牌。無序洗牌是BYKEY操作中的性能開銷。一般來說,對於RDD來說,如何進行混洗以及配對RDD或加入混洗將會發生。如果你可以用RDD和RDD中的例子來解釋,那就太好了。火花洗牌
Shuffling發生在ByKey Operations中是一個開銷,它碰巧帶來了一組特定的工作節點處理的密鑰。
當你執行一個groupByKey()和rdd.toDebugString時,你會看到RDD的階段,在'groupByKey'的情況下你會看到混亂的RDD。
因此,例如,假設你有3個節點:(假設數據是對RDD形式)
Node 1 -> Contains -> ("California", "San Francisco"), ("Texas", "Dallas")
Node 2 -> Contains -> ("Utah", "Salt Lake City"), ("California", "San Jose")
Node 3 -> Contains -> ("Texas", "Austin"), ("Utah", "St.George")
現在,如果你執行一個RDD一個groupByKey由這個數據會帶來下1所有類似鑰匙節點。所以在Shuffling之後你的數據看起來就像
Node 1 -> Contains -> ("California", Iterable(("San Francisco", "SanJose")))
Node 2 -> Contains -> ("Utah", Iterable(("Salt Lake City", "St.George")))
Node 3 -> Contains -> ("Texas", Iterable(("Austin"), ("Dallas")))
你可以通過以下文章:https://0x0fff.com/spark-architecture-shuffle/ –