【发布时间】:2018-09-19 17:43:36
【问题描述】:
我有一个这样的输入文件:
The Works of Shakespeare, by William Shakespeare
Language: English
我想使用 flatMap 和 combinations 方法来获得每行的 K-V 对。
这就是我的工作:
var pairs = input.flatMap{line =>
line.split("[\\s*$&#/\"'\\,.:;?!\\[\\(){}<>~\\-_]+")
.filter(_.matches("[A-Za-z]+"))
.combinations(2)
.toSeq
.map{ case array => array(0) -> array(1)}
}
在此之后我得到了 17 双,但错过了其中两双:(by,shakespeare) 和 (william,shakespeare)。我觉得第一句话的最后一个字可能有问题,但我不知道如何解决,谁能告诉我?
【问题讨论】:
-
欢迎来到 StackOverflow。请避免发布图像,而是将代码以文本形式发布,并通过选择代码并按 Ctrl + K 对其进行格式化。您也可以阅读How to Ask 了解更多信息。记得提供minimal reproducible example
-
使用
combinations,您将获得(by,shakespeare)或(shakespeare,by),而不是两者。
标签: scala apache-spark rdd