Вы можете разделить «ключи» (в данном случае, правую часть кортежей) на 2 и сгруппировать по результату - так как это Int
с, при делении будет Int
как хорошо, что означает, что нечетные числа дают тот же результат, что и предыдущее четное число, давая вам результат, который вы ищете:
val result: RDD[Iterable[(Int, Int)]] = rdd.groupBy { case (_, k) => k / 2 }.values
result.foreach(println)
// CompactBuffer((0,0), (0,0), (0,1), (1,1))
// CompactBuffer((0,2), (0,3), (1,2), (1,3)