gpt4 book ai didi

scala - 使用scala计算与spark的共现项

转载 作者:行者123 更新时间:2023-12-02 01:13:33 25 4
gpt4 key购买 nike

我想使用 Scala 计算同现项。但是我遇到了一些问题。

这是我的代码:

val path = "pg100.txt"
val words = sc.textFile(path).map(_.toLowerCase.split("[\\s*$&#/\"'\\,.:;?!\\[\\](){}<>~\\-_]+").map(_.trim).sorted)
val coTerm = words.map{ line =>
for{
i <-0 until line.length
j <- (i+1) until line.length
} {
((line(i), line(j)), 1)
}}

预期的输出应该是:

coTerm.collect
res48: Array[Unit] = Array(((word1, word2), 1), ((word1, word3), 1), ((word2, word3), 1)...

但我的输出如下:

coTerm.collect
res51: Array[Unit] = Array((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()....

我不知道为什么我可以使用 .map 中的 println 函数来打印单词对但无法发出输出。

最佳答案

原因是您实际上没有从 map 返回任何记录。

使用yield返回for中的记录,如下所示:

val coTerm = words.map{ line =>
for{
i <-0 until line.length
j <- (i+1) until line.length
} yield {
((line(i), line(j)), 1)
}}

关于scala - 使用scala计算与spark的共现项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43797758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com