-
Le "chunking" vient de votre code :le paramètre values de votre fonction reduce peut contenir soit
{time:<timestamp>,value:<value>}
émis par votre fonction de carte, ou{time:[<timestamps>],value:[<values]}
renvoyé d'un appel précédent à votre fonction reduce. -
Je ne sais pas si cela se produira en pratique, mais cela peut arriver en théorie.
-
Demandez simplement à votre fonction map d'émettre le même type d'objets que votre fonction reduce renvoie, c'est-à-dire
emit(<id>, {time: [ts], value: [P[1]]})
, et modifiez votre fonction de réduction en conséquence, c'est-à-direArray.push.apply(result.time, V.time)
et de même pourresult.value
.En fait, je ne comprends pas pourquoi vous n'utilisez pas un tableau de paires temps/valeur, au lieu d'une paire de tableaux, c'est-à-dire
emit(<id>, { pairs: [ {time: ts, value: P[1] ] })
ouemit(<id>, { pairs: [ [ts, P[1]] ] })
dans la fonction map, etArray.push.apply(result.pairs, V.pairs)
dans la fonction de réduction. De cette façon, vous n'aurez même pas besoin de la fonction finalize (sauf peut-être pour "déballer" le tableau des paires propriété :parce que la fonction reduce ne peut pas renvoyer un tableau, vous devez l'envelopper de cette façon dans un objet)