Standardpartitionierungsschema in Spark

8

Wenn ich den folgenden Befehl ausführe:

 %Vor%

Es heißt, dass es 10 Partitionen gibt und die Partitionierung mit HashPartitioner erfolgt. Aber wenn ich unter Befehl ausführen:

 %Vor%

Es besagt, dass es vier Partitionen gibt und der Partitionierer nicht definiert ist. Was ist das Standardpartitionierungsschema in Spark? / Wie werden Daten im zweiten Fall partitioniert?

    
Dinesh Sachdev 108 28.12.2015, 09:53
quelle

1 Antwort

11

Sie müssen zwischen zwei verschiedenen Dingen unterscheiden:

  • Partitionierung als Datenverteilung zwischen Partitionen abhängig von einem Wert des Schlüssels, der nur auf PairwiseRDDs ( RDD[(T, U)] ) beschränkt ist. Dies schafft eine Beziehung zwischen der Partition und der Schlüsselmenge, die auf einer bestimmten Partition gefunden werden kann.
  • Partitionierung als Teilungseingabe in mehrere Partitionen, in denen Daten einfach in Blöcke aufgeteilt werden, die aufeinanderfolgende Datensätze enthalten, um verteilte Berechnungen zu ermöglichen. Exakte Logik hängt von einer bestimmten Quelle ab, aber sie ist entweder die Anzahl der Datensätze oder die Größe eines Chunks.

    Im Fall von parallelize sind die Daten gleichmäßig auf Partitionen verteilt, die Indizes verwenden. Im Fall von HadoopInputFormats (wie textFile ) hängt dies von Eigenschaften wie mapreduce.input.fileinputformat.split.minsize / mapreduce.input.fileinputformat.split.maxsize ab.

Das Standardpartitionierungsschema ist einfach nicht vorhanden, da die Partitionierung nicht auf alle RDDs angewendet werden kann. Für Operationen, die eine Partitionierung in einer PairwiseRDD ( aggregateByKey , reduceByKey usw.) erfordern, ist die Standardmethode die Hash-Partitionierung.

    
zero323 28.12.2015, 10:19
quelle

Tags und Links