Использование 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 вместо приведенного выше кода, чтобы обеспечить такое же отображение?