Сравните два rdd и значения, соответствующие правому rdd, поместите его в rdd
У меня 2
rdd1 rdd2
1,abc 3,asd
2,edc 4,qwe
3,wer 5,axc
4,ert
5,tyu
6,sdf
7,ghj
Сравните два rdd и один раз, которые совпадают с идентификатором, будет обновлено значение от rdd2 до rdd1. Я понимаю, что rdd неизменны, поэтому я считаю, что новый rdd будет создан. Выходной rdd будет выглядеть примерно так
output rdd
1,abc
2,edc
3,asd
4,qwe
5,axc
6,sdf
7,ghj
Это базовая вещь, но я новичок в разжигании и скала и пробовать вещи.
1 ответ
Использование leftOuterJoin
чтобы сопоставить два RDD по ключу, затем используйте map
выбрать "новое значение" (из rdd2
) если он существует, или оставьте "старый" в противном случае:
// sample data:
val rdd1 = sc.parallelize(Seq((1, "aaa"), (2, "bbb"), (3, "ccc")))
val rdd2 = sc.parallelize(Seq((3, "333"), (4, "444"), (5, "555")))
val result = rdd1.leftOuterJoin(rdd2).map {
case (key, (oldV, maybeNewV)) => (key, maybeNewV.getOrElse(oldV))
}