匹配两个RDD [String]

时间:2016-05-11 16:19:40

标签: scala apache-spark rdd

我尝试匹配两个RDD' RDD1包含大量单词[String],RDD2包含城市名称[String]。

我想返回RDD,其中RDD1中的元素位于RDD2中。 与subtract相反的东西。

之后我想计算每个剩余单词的出现次数,但这不会成为问题。

谢谢

1 个答案:

答案 0 :(得分:2)

  

我想返回RDD,其RDD1中的元素位于RDD2

如果我说对了你的话:

rdd1.subtract(rdd2.subtract(rdd1))

请注意此代码与intersection

之间的区别
val rdd1 = sc.parallelize(Seq("a", "a", "b", "c"))
val rdd2 = sc.parallelize(Seq("a", "c", "d"))
val diff = rdd1.subtract(rdd2)
rdd1.subtract(diff).collect()
res0: Array[String] = Array(a, a, c)
rdd1.intersection(rdd2).collect()
res1: Array[String] = Array(a, c)

因此,如果您的第一个RDD包含重复项,并且您的目标是考虑重复项,那么您可能更喜欢双subtract解决方案。否则,intersection非常适合。