Объясните совокупную функциональность в Spark
Я ищу лучшее объяснение совокупной функциональности, которая доступна через spark в 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)
.