匹配两个 RDD [String]
Match two RDDs [String]
我尝试匹配两个 RDD:
RDD1 包含大量单词 [String],RDD2 包含城市名称 [String]。
我想 return 一个 RDD,其中包含 RDD1 中的元素,这些元素在 RDD2 中。
与 subtract
.
相反的东西
之后我想计算每个剩余单词的出现次数,但这不会成为问题。
谢谢
I want to return an RDD with the elements from RDD1 that are in 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
很合适。
我尝试匹配两个 RDD: RDD1 包含大量单词 [String],RDD2 包含城市名称 [String]。
我想 return 一个 RDD,其中包含 RDD1 中的元素,这些元素在 RDD2 中。
与 subtract
.
之后我想计算每个剩余单词的出现次数,但这不会成为问题。
谢谢
I want to return an RDD with the elements from RDD1 that are in 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
很合适。