Как вычислить список сумм и кортеж с помощью RDD Spark

#scala #apache-spark #sum #tuples #rdd

#scala #apache-spark #сумма #кортежи #rdd

Вопрос:

У меня есть RDD, который выглядит следующим образом

 val elements = List((8, 12), (9, 10), (5, 16))
  

вывод должен выглядеть следующим образом

 result_1 = 22 #sum of the first element
result_2 = 38 #sum of the second element
  

Ответ №1:

Существует несколько способов вычисления суммы.

 val result1 = rdd.map(_._1).sum()
val result2 = rdd.map(_._2).sum()

val result = rdd.reduce((a, b) => (a._1   b._1, a._2   b._2))

// result1: Double = 22.0
// result2: Double = 38.0
// result: (Int, Int) = (22,38)
  

Ответ №2:

Вы также можете использовать fold ;

 rdd.fold(0,0)((first,second) =>(first._1   second._1, first._2   second._2)))
  

Для пояснения функция fold;

https://www.geeksforgeeks.org/scala-reduce-fold-or-scan/