我有一个简单的问题,假设我有两个RDD:
RDD1: [a,b,b,c,c,c,d] RDD2:[a,b,c,d]
我想知道有多少a、b、c、d,这样返回的结果应该是这样的:
RDD:[(a,b,c,d),(1,2,3,1)]
使用Lists可以很容易地完成,但在RDD中,我似乎必须首先将它们收集到Array中,然后执行以下操作:
count(_==string)
有什么比我更容易的工作吗?
我对RDD或Spark的了解非常少。但在scala中,你可以尝试这样的东西:
val l1 = List('a', 'b', 'c', 'd')
val l2 = List('a', 'b', 'b', 'c', 'c', 'c', 'd')
def f(l1: List[Char], l2: List[Char]):(List[Char],List[Int]) = {
val count = l1.map {
x => l2.count(_ == x)
}.toList
(l1, count)
}
f(l1,l2)
REPL:的输出
res0: (List[Char], List[Int]) = (List(a, b, c, d),List(1, 2, 3, 1))