foldByKey

fun <K, V> JavaRDD<Tuple2<K, V>>.foldByKey(zeroValue: V, partitioner: Partitioner, func: (V, V) -> V): JavaRDD<Tuple2<K, V>>
fun <K, V> JavaRDD<Tuple2<K, V>>.foldByKey(zeroValue: V, numPartitions: Int, func: (V, V) -> V): JavaRDD<Tuple2<K, V>>
fun <K, V> JavaRDD<Tuple2<K, V>>.foldByKey(zeroValue: V, func: (V, V) -> V): JavaRDD<Tuple2<K, V>>

Merge the values for each key using an associative function and a neutral "zero value" which may be added to the result an arbitrary number of times, and must not change the result (e.g., emptyList for list concatenation, 0 for addition, or 1 for multiplication.).