Explicar a funcionalidade agregada no Spark
Estou procurando uma explicação melhor da funcionalidade agregada que está disponível via spark em python.
O exemplo que eu tenho é o seguinte (usando o pyspark da versão 1.2.0 do Spark)
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])))
Resultado:
(10, 4)
Eu recebo o resultado esperado(10,4)
que é soma de1+2+3+4
e 4 elementos. Se eu alterar o valor inicial passado para a função agregada para(1,0)
de(0,0)
Eu recebo o seguinte resultado
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])))
Resultado:
(19, 4)
O valor aumenta em 9. Se eu mudar para(2,0)
, o valor vai para(28,4)
e assim por diante.
Alguém pode me explicar como esse valor é calculado? Eu esperava que o valor subisse 1 e não 9, esperava ver(11,4)
estou vendo(19,4)
.