【发布时间】:2021-06-07 17:27:35
【问题描述】:
我有两个 RDD(键,值)。我的第二个 RDD 比我的第一个 RDD 短。我想将我的第一个 RDD 的每个值与第二个 RDD 中的对应值相关联,关于键。
val (rdd1: RDD[(key,A)])
val (rdd2: RDD[(key,B)])
val (rdd3: RDD[R])
与rdd1.count() >> rdd2.count(),且rdd1的多个元素有相同的key。
现在,我知道当在 rdd2 中找不到对应的键时,我想为 b 使用 constant 值。我认为 leftOuterJoin 将是在这里使用的自然方法:
val rdd3 = rdd1.leftOuterJoin(rdd2).map{
case (key,(a,None)) => R(a,c)
case (key,(a,Some(b)) => R(a,b)
}
这里有什么让你觉得不对劲的地方吗?加入这样的元素时,我得到了意想不到的结果。
【问题讨论】:
-
有什么意外?
-
我认为我的输出不正确,但排序是错误的。我在想 rdd1 的顺序会被保留,但事实并非如此。我应该删除问题吗?
-
我不明白为什么不:)
-
问题是什么?
标签: database scala apache-spark rdd