我想做的是简单,但我在使用Scala和RDD。 这个概念是这样的:
rdd1 rdd2
id count id count
a 2 a 1
b 1 c 5
d 3
我要搜索的结果是:
rdd2
id count
a 3
b 1
c 5
d 3
我打算做的是执行完全外连接以获取由id字段标识的公共寄存器和非公共寄存器。目前,rdd2是空的。 rdd1和rdd2是:
RDD[(String, org.apache.spark.sql.Row)]
目前,我有以下代码:
var rdd3 = rdd1.fullOuterJoin(rdd2).map {
case (id, left, right) =>
// TODO
}
如何计算RDD之间的总和?
答案 0 :(得分:1)
如果您正在执行val result = rdd1.fullOuterJoin(rdd2).map {
case (id, (left, right)) =>
(id, left.getOrElse(0) + right.getOrElse(0))
}
,则会获得密钥并将两个选项传递到闭包中(一个选项表示左侧,另一个选项表示右侧)。因此闭包可能如下所示:
RDD
如果您的(String, Int)
类型为if not line.strip():
break
,则适用。