Erläutern Sie die Aggregatfunktionalität in Spark

Ich suche nach einer besseren Erklärung für die Aggregatfunktionalität, die über spark in python verfügbar ist.

Das Beispiel, das ich habe, ist wie folgt (mit Pyspark ab Version Spark 1.2.0)

sc.parallelize([1,2,3,4]).aggregate(
  (0, 0),
  (lambda acc, value: (acc[0] + value, acc[1] + 1)),
  (lambda acc1, acc2: (acc1[0] + acc2[0], acc1[1] + acc2[1])))

Ausgabe

(10, 4)

Ich erhalte das erwartete Ergebnis(10,4) das ist die Summe von1+2+3+4 und 4 Elemente. Wenn ich den an die Aggregatfunktion übergebenen Anfangswert in @ ände(1,0) von(0,0) Ich erhalte das folgende Ergebnis

sc.parallelize([1,2,3,4]).aggregate(
    (1, 0),
    (lambda acc, value: (acc[0] + value, acc[1] + 1)),
    (lambda acc1, acc2: (acc1[0] + acc2[0], acc1[1] + acc2[1])))

Ausgabe

(19, 4)

Der Wert erhöht sich um 9. Wenn ich ihn auf @ ände(2,0), der Wert geht an(28,4) und so weiter

Kann mir jemand erklären, wie dieser Wert berechnet wird? Ich habe erwartet, dass der Wert um 1 und nicht um 9 steig(11,4) stattdessen sehe ich(19,4).

Antworten auf die Frage(14)

Ihre Antwort auf die Frage