Использование reduByKey в Apache Spark (Scala)

У меня есть список кортежей типа: (идентификатор пользователя, имя, количество).

Например,

val x = sc.parallelize(List(
    ("a", "b", 1),
    ("a", "b", 1),
    ("c", "b", 1),
    ("a", "d", 1))
)

Я пытаюсь уменьшить эту коллекцию до типа, в котором учитывается каждое имя элемента.

Таким образом, в вышеупомянутом val x преобразуется в:

(a,ArrayBuffer((d,1), (b,2)))
(c,ArrayBuffer((b,1)))

Вот код, который я сейчас использую:

val byKey = x.map({case (id,uri,count) => (id,uri)->count})

val grouped = byKey.groupByKey
val count = grouped.map{case ((id,uri),count) => ((id),(uri,count.sum))}
val grouped2: org.apache.spark.rdd.RDD[(String, Seq[(String, Int)])] = count.groupByKey

grouped2.foreach(println)

Я пытаюсь использовать lowerByKey, поскольку он работает быстрее, чем groupByKey.

Как может быть реализован ReduKyKey вместо приведенного выше кода, чтобы обеспечить такое же отображение?

Ответы на вопрос(3)

Ваш ответ на вопрос