匹配两个 RDD [字符串]

Posted

技术标签:

【中文标题】匹配两个 RDD [字符串]【英文标题】:Match two RDDs [String] 【发布时间】:2016-05-11 16:19:39 【问题描述】:

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

我想返回一个 RDD,其中包含 RDD1 中 RDD2 中的元素。 类似于subtract 的反面。

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

谢谢

【问题讨论】:

你的意思是intersection 从问题上看不清楚,但从“我想计算每个剩余单词的出现次数”我得出结论,每个字符串重复的数量很重要。 【参考方案1】:

我想返回一个包含 RDD1 中 RDD2 中的元素的 RDD

如果我猜对了:

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 非常适合。

【讨论】:

没错,对我们来说重复很重要,这就是我们不能使用 distinct 的原因。非常感谢你 :) 你让三个学生真的很开心 我们只是没有想到内在的转变。 :)

以上是关于匹配两个 RDD [字符串]的主要内容,如果未能解决你的问题,请参考以下文章

Apache Spark - 如何从两个 RDD 中获取不匹配的行

如果存储在键中的值匹配,如何在 Spark 中合并两个 RDD

加入 RDD leftOuterJoin - 错误:类型不匹配

Python Spark 中的精确字符串逼近

想找一个解决两个字符串匹配程度的算法。

匹配两个字符串之外的所有内容