2017-01-11 2 views
1

Ich würde mich sehr freuen, wenn jemand diese paar Spark shuffle Fragen vereinfacht beantworten könnte.Understanding shuffle und rePartitioning in spark

In Funken, wenn eine Datensatz geladen, geben wir die Anzahl der Partitionen festgelegt sind, die, wie viele Block sollte die Eingangsdaten (RDD) unterteilt werden in teilt, und auf der Basis der Anzahl der Teilungen, die gleiche Anzahl von Aufgaben gestartet (richtig, wenn die Annahme falsch ist) .für X Anzahl der Kerne in Arbeitern node.corresponding X Anzahl der Aufgabe auf einmal laufen.

In einer ähnlichen Richtung, hier sind die wenige Fragen.

Da alle ByKey-Operationen zusammen mit Coalesce, Repartition, Join und Cogroup Daten shuffle verursacht.

  1. Werden die Daten einen anderen Namen für repartitiong Betrieb mischen?

  2. Was die ersten Partitionen geschieht (Anzahl der Partitionen erklärt), wenn Neuverteilungen passiert.

  3. Kann jemand geben Beispiel (bitte angeben), wie Datenbewegung über im gesamten Cluster happens.i paar Beispiele gesehen hat, wo zufällige Pfeil Bewegung der Schlüssel angezeigt wird (aber nicht wissen, wie die Bewegung angetrieben wird), zum Beispiel Wenn wir bereits Daten in 10 Partitionen haben, kombiniert der Vorgang der erneuten Partitionierung zuerst alle Daten und sendet dann den bestimmten Schlüssel basierend auf dem Hash-Code% numberofpartitions an die jeweilige Partition.

Antwort

0

Zuerst ist HDFS Blöcke in Anzahl der Partition nicht in den Blöcken unterteilt. Diese Petitionen liegen in der Erinnerungsarbeit. Diese Partitionen befinden sich im Arbeitsspeicher.

Q- Ist-Daten eines anderen Namen mischen Operation für repartitiong?

A- Nr Allgemeinen partitionieren Mittel, um die vorhandene Partition Erhöhung in der die Daten in unterteilt ist. Wenn wir also die Partition vergrößern, versuchen wir tatsächlich, die Daten in der Anzahl neuer Partitionen, die im Code gesetzt sind, zu "verschieben", nicht "Shuffling". Shuffling ist etwas, wenn wir die Daten eines bestimmten Schlüssels in einer Partition verschieben.

Q- Was ist mit den ursprünglichen Partitionen (Anzahl der Partitionen deklariert) passiert, wenn Neuverteilungen passiert? A- Covered oben Eine weitere zugrunde liegende Sache ist rdd.repartition (n) wird nicht die Nr. Ändern. Von Partitionen von rdd, sein ein tranformation, die funktionieren, wenn einige andere rdd wie RDD1 = rdd.repartition erstellt (n)

Now it will create new rdd1 that have n number of partition.To do this, we can call coalesce function like rdd.coalesce(n) Being an action function, this will change the partitions of rdd itself. 

Q- jemand Beispiel geben kann (erklären), wie Daten Bewegung über über die cluster happens.i habe einige Beispiele gesehen, in denen die zufällige Pfeilbewegung von Schlüsseln gezeigt wird (aber nicht wissen, wie die Bewegung gesteuert wird), wenn wir zum Beispiel bereits Daten in 10 Partitionen haben, kombiniert die Re-Partitionierungsoperation zuerst alle Daten und senden Sie dann den bestimmten Schlüssel an die bestimmte Partition basierend auf dem Hashcode% numberofpartitions.

Ans- Partition und Partitionierung bei zwei verschiedenen unterschiedlichen Konzept so Partition ist etwas, in dem die Daten gleichmäßig in der Anzahl der Partitionen durch den Benutzer geteilt wird, aber in der Partitionierung, Daten werden zwischen diesen Partitionen nach Algorithmen durch den Benutzer eingestellt gemischt wie HashPartitioning & RangePartitioning.

wie RDD = sc.textFile („../ path“, 5) rdd.partitions.size/Länge

O/p: Int: 5(No.of partitions) 

rdd.partitioner.isDefined

O/p: Boolean= false 

rdd.partitioner

O/p: None(partitioning scheme) 

Aber

RDD = sc.textFile („../ path“, 5) .partitionBy (new org.apache.spark.HashPartition (10) .cache()

rdd.partitions.size

O/p: Int: 10 

rdd.partitioner.isDefined

O/p: Boolean: true 

rdd.partitioner

O/p: [email protected] 

Hope this helfen !!!

Verwandte Themen