Проверьте приведенный ниже пример -
val list = List(("a","b","c"),("x","y","z"),("p","b","c"))
val temp = sc.parallelize(list)
temp.groupBy(x => x._2+x._3).collect
Вывод
Array[(String, Iterable[(String, String, String)])] = Array((yz,CompactBuffer((x,y,z))), (bc,CompactBuffer((a,b,c), (p,b,c))))
Обратите внимание, что groupBy () принимает элемент в RDD (в данном случае кортеж из 3 значений) и возвращает назад ключ, с которым записи могут быть сгруппированы.
Вот определение groupBy для вашей справки
def groupBy[K](f: ((String, String, String)) => K,p: org.apache.spark.Partitioner)