scala intersection with count



我有一个简单的问题,假设我有两个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))

相关内容

  • 没有找到相关文章

最新更新