我有2 rdd
rdd1 rdd2
1,abc 3,asd
2,edc 4,qwe
3,wer 5,axc
4,ert
5,tyu
6,sdf
7,ghj
比较两个rdd,一旦匹配id,将使用rdd2到rdd1的值进行更新。 我知道rdd是不可变的所以我认为新的rdd将被制作。 输出rdd看起来像这样
output rdd
1,abc
2,edc
3,asd
4,qwe
5,axc
6,sdf
7,ghj
这是一个基本的东西,但是,我是新手来点火和尝试。
答案 0 :(得分: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))
}