2017-04-27 3 views
0

Ich muss verstehen, wie Shuffling in Spark passiert. Ob Shuffling in BYKEY-Operationen Leistungsüberhang ist. Im Allgemeinen für eine RDD, wie Shuffling passiert und RDD paaren oder verbindet, wie Mischen geschieht. Wenn Sie mit RDD in RDD und Pair RDD erklären können, wäre es großartig.Shuffling in Spark

+1

können Sie durch folgenden Artikel: https://0x0fff.com/spark-architecture-shuffle/ –

Antwort

0

Mischen geschieht in ByKey-Operationen sind ein Overhead und es bringt einen bestimmten Satz von Schlüsseln, die von einem bestimmten Worker Node verarbeitet werden.

Wenn Sie eine groupByKey() und rdd.toDebugString durchführen, sehen Sie die Stufen von RDD, in denen Sie shuffled RDD im Falle von 'groupByKey' sehen werden.

So zum Beispiel Lets sagen, Sie haben 3 Knoten: (Unter der Annahme, Daten in Pair RDD Form)

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") 

Nun, wenn Sie einen groupByKey auf einer RDD aus diesen Daten durchführen wird es alle ähnlichen Schlüssel unter 1 bringen Knoten. So nach Shuffling werden Ihre Daten wie folgt aussehen:

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")))