首页 > 解决方案 > Spark Scala:比较两个字符串中的单词的有效方法

问题描述

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

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

标签: scalaapache-spark

解决方案


拆分字符串,转换为集合,找到交集

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)

推荐阅读