2017-11-19 1 views
0

Die RDD ist Schlüssel-Wert-Paar. groupByKey() könnte eine Menge Shuffle erzeugen, was die Performance beeinträchtigt. Ich frage mich, wie unnötige Shuffle mit groupByKey()So reduzieren Sie zu viele Shuffle mit groupByKey()

reduzieren Wenn ich zuerst RDD zuerst und dann GroupByKey, wird es helfen?

val inputRdd2 = inputRdd.partitionBy(new HashPartitioner(partitions=500)) 

inputRdd2.groupByKey() 

Erstellt partitionBy() auch shuffle? Danke

Antwort

0

Wenn ich zuerst RDD zuerst parsere, und dann groupByKey, wird es helfen?

Es wird nicht. partitionBy selbst ist ein Shuffle, und reduceByKey gilt sowieso keine Kartenseitenreduzierung, so wird es insgesamt nichts ändern.

Leider gibt es im Allgemeinen keine guten Nachrichten für Sie. Wenn Sie groupByKey wollen, müssen Sie den Preis bezahlen. Während ein gut gestalteter Datensammlungs- und Aufnahmeprozess die Datenlokalität erhöhen und Shuffles in nachgeschalteten Verbrauchern (wie Spark) reduzieren kann, gibt es nicht viel, was Sie bei beliebigen Eingaben tun können.

Auf der hellen Seite können viele groupBy Anwendungen auf verschiedene Arten ausgedrückt werden, vor allem, wenn genaue Ergebnisse nicht erforderlich sind. Verschiedene Arten von probabilistischen Datenstrukturen sind wahrscheinlich das prominenteste Beispiel.

Verwandte Themen