Вы можете попробовать что-то
myPairedRDD.mapPartitions(iter =>
iter.groupBy(_._1).mapValues(_.map(_._2).reduce(_ + _)).iterator
)
или повысить эффективность использования памяти (здесь я предполагаю, что myPairedRDD
равно RDD[(String, Double)]
. Пожалуйста, настройте типы в соответствии с вашим вариантом использования):
myPairedRDD.mapPartitions(iter =>
iter.foldLeft(mutable.Map[String, Double]().withDefaultValue(0.0)){
case (acc, (k, v)) => {acc(k) += v; acc}
}.iterator
)
но учтите, что в отличие от операций тасования он не может выгружать данные из памяти.