Explicar la funcionalidad agregada en Spark
Estoy buscando una mejor explicación de la funcionalidad agregada que está disponible a través de spark en python.
El ejemplo que tengo es el siguiente (usando pyspark de la versión 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])))
Salida:
(10, 4)
Obtengo el resultado esperado(10,4)
que es la suma de1+2+3+4
y 4 elementos. Si cambio el valor inicial pasado a la función agregada a(1,0)
de(0,0)
Obtengo el siguiente 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])))
Salida:
(19, 4)
El valor aumenta en 9. Si lo cambio a(2,0)
, el valor va a(28,4)
y así.
¿Alguien puede explicarme cómo se calcula este valor? Esperaba que el valor aumentara en 1, no en 9, esperaba ver(11,4)
en cambio estoy viendo(19,4)
.