scala - Spark Scala:比较两个字符串中的单词的有效方法
问题描述
我正在寻找一种有利于火花并行性的有效方法,它将比较两个字符串中的单词。这两个字符串将是两个数据集中的一列。任务很简单:计算一个字符串中出现在另一个字符串中的匹配单词的数量。
例如,“AA BB CC”、“AA A CC DD”-> 2(单词 AA 和 CC)
例如,“BB CC”、“AA A CC DD”-> 1(单词 CC)
scala中是否有一种有效的方法可以应用,而不是编写一个循环来遍历一个字符串中的每个单词?
解决方案
拆分字符串,转换为集合,找到交集
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)
推荐阅读
- django - websocket启动时的django通道错误消息(Sessions.py)
- matplotlib - “matplotlib.pyplot”没有属性“autofmt_xdate”
- javascript - 节点加密解密
- python - Python Web Scraping using BeautifulSoup AttributeError: 'NoneType' object has no attribute 'text'
- hibernate - 如何获取深度嵌套的@*ToOne 避免 n+1 休眠问题
- java - 如何连接到现有的 kubernetes 服务器并使用 java 列出所有 pod?
- ruby-on-rails - 发送电子邮件失败时的 HTTP 状态码
- python-3.x - Python Tkinter 3d 绘图无法平移或缩放
- java - 从组合框中获取值编号到标签
- php - 每页动态自定义 WooCommerce 产品与 relevanssi 不兼容