Mam RDD z (String, int), która jest posortowana według kluczJak obliczyć skumulowaną sumę użyciu Spark
val data = Array(("c1",6), ("c2",3),("c3",4))
val rdd = sc.parallelize(data).sortByKey
Teraz chcę zacząć wartość dla pierwszego klucza z zera do kolejnych kluczy jako suma poprzednich kluczy.
Np: C1 = 0, c2 = na c1 wartość, C3 = (c1 wartość wartość + c2), c4 = (c1 + .. + wartość c3) oczekiwany wynik:
(c1,0), (c2,6), (c3,9)...
Czy jest możliwe osiągnąć to ? Próbowałem go z mapą, ale suma nie jest zachowywana na mapie.
var sum = 0 ;
val t = keycount.map{ x => { val temp = sum; sum = sum + x._2 ; (x._1,temp); }}
Jest sekwencyjny, a zatem nie można go zrównoleglić, więc nie jest to właściwy sposób użycia Sparka. Sugerowałbym, żebyś przeczytał o tym, czym jest Spark. –
Przykro mi, ale nawet po kolei nie rozumiem relacji między danymi wejściowymi a danymi wyjściowymi? jak to obliczyć? – eliasah
@JohanS Tak, to jest sekwencyjne i wierzę również, że to nie jest właściwy sposób na użycie iskry. W naszym przypadku użycia skończyliśmy w ten sposób. Pozwól mi wypróbować inny sposób, aby osiągnąć funkcjonalność. – Knight71