Сравнение двух СДР
У меня есть два RDD [Array [String]], назовем их rdd1 и rdd2. Я бы создал новый RDD, содержащий только записи rdd2, а не rdd1 (на основе ключа). Я использую Spark на Scala через Intellij.
Я сгруппировал rdd1 и rdd2 по ключу (я сравню только ключи двух rdds):
val rdd1Grouped = rdd1.groupBy(line => line(0))
val rdd2Grouped = rdd2.groupBy(line => line(0))
Затем я использовалleftOuterJoin
:
val output = rdd1Grouped.leftOuterJoin(rdd2Grouped).collect {
case (k, (v, None)) => (k, v)
}
но это не дает правильного результата.
Что с этим не так? Кто-нибудь предлагает?
Пример RDDS (каждая строка представляет собой массив [String], ofc):
rdd1 rdd2 output (in some form)
1,18/6/2016 2,9/6/2016 2,9/6/2016
1,18/6/2016 2,9/6/2016
1,18/6/2016 2,9/6/2016
1,18/6/2016 2,9/6/2016
1,18/6/2016 1,20/6/2016
3,18/6/2016 1,20/6/2016
3,18/6/2016 1,20/6/2016
3,18/6/2016
3,18/6/2016
3,18/6/2016
В этом случае я хочу добавить только запись «2,9 / 6/2016», потому что ключ «2» находится не в rdd1.