Spark Scala:比较两个字符串中单词的有效方法

时间:2019-02-28 16:09:02

标签: scala apache-spark

我正在寻找一种有效的方法,该方法有助于在火花中进行并行处理,以比较两个字符串中的单词。这两个字符串将成为两个数据集中的一列。 任务很简单:计算一个字符串中出现在另一字符串中的匹配单词的数量。
例如“ AA BB CC”,“ AA A CC DD”-> 2(单词AA和CC)
例如,“ BB CC”,“ AA A CC DD”-> 1(单词CC)

在scala中,有没有一种我可以应用的有效方法,而不是编写循环以遍历一个字符串中的每个单词?

1 个答案:

答案 0 :(得分:0)

分割字符串,转换为集合,然后找到交点

def common_words(x: String, y: String) = x.split(" ").toSet.intersect(y.split(" ").toSet)

用法:

common_words("AA BB CC", "AA A CC DD")
res3: scala.collection.immutable.Set[String] = Set(AA, CC)
scala> common_words("BB CC", "AA A CC DD")
res4: scala.collection.immutable.Set[String] = Set(CC)