Как использовать groupByKey () на нескольких RDD? - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть несколько RDD с одним общим полем CustomerId.

Например:

debitcardRdd имеет данные как (CustomerId, debitField1, debitField2, ......)

creditcardRdd имеет данные как (CustomerId, creditField1, creditField2, ....)

netbankingRdd имеет данные как (CustomerId, nbankingField1, nbankingField2, ....)

Мы выполняем различные преобразования для каждого отдельного rdd, однако нам необходимо выполнить преобразование для данных со всех 3-х сторон путем группировки CustomerId.

Пример: (CustomerId,debitFiedl1,creditField2,bankingField1,....)

Есть ли способ, которым мы можем сгруппировать данные из всех RDD на основе одного и того же ключа.

Примечание. В Apache Beam это можно сделать с помощью coGroupByKey, просто проверив, есть ли такая альтернатива в Spark.

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

В отличие от нижеприведенного, .keyBy здесь фактически не требуется, и мы отмечаем, что cogroup - недостаточно хорошо описанная может распространяться на n RDD.

val rddREScogX = rdd1.cogroup(rdd2,rdd3,rddn, ...)

Точки должны идти к первому ответу.

0 голосов
/ 11 сентября 2018

Просто cogroup

debitcardRdd.keyBy(_.CustomerId).cogroup(
  creditcardRdd.keyBy(_.CustomerId),
  netbankingRdd.keyBy(_.CustomerId)
)
...