Я ищу более подробное объяснение совокупной функциональности, доступной через искру в python.
Пример, который у меня есть, следующий (используя pyspark из версии 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])))
Вывод:
(10, 4)
Я получаю ожидаемый результат (10,4)
, который представляет собой сумму 1+2+3+4
и 4 элемента. Если я изменил начальное значение, переданное агрегированной функции на (1,0)
из (0,0)
, я получаю следующий результат
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])))
Вывод:
(19, 4)
Значение увеличивается на 9. Если я изменю его на (2,0)
, значение будет (28,4)
и т.д.
Может кто-нибудь объяснить мне, как рассчитывается это значение? Я ожидал, что значение увеличится на 1, а не на 9, ожидая увидеть (11,4)
вместо этого, я вижу (19,4)
.