我想在斯卡拉编写字数统计程序。我使用一个字符串"file"
:斯卡拉:值分裂不是字符的成员
file.map(_.split(" ")).flatMap(word => (word, 1)).reduceByKey(_ + _)
它一直说:
值分割是不是char
成员
无法弄清楚如何解决呢!
我想在斯卡拉编写字数统计程序。我使用一个字符串"file"
:斯卡拉:值分裂不是字符的成员
file.map(_.split(" ")).flatMap(word => (word, 1)).reduceByKey(_ + _)
它一直说:
值分割是不是char
成员
无法弄清楚如何解决呢!
当您在String
上致电map
时,它包装有WrappedString
,其延伸AbstractSeq[Char]
。因此,当您拨打map
时,就好像您在的而不是Seq
的String
这样做。
通过下面的空格分割的代码,并返回该尺寸,一个字计数器。
val file = "Some test data"
file.split("\\s+").size
获得字符串中每个单词出现次数的计数。
val file = "Some test data test"
println(file.split("\\s+").toList.groupBy(w => w).mapValues(_.length))
非常感谢你帮助我,但现在我想减少BKey!它给我错误说:reduceByKey不是scala.collection.immutable.Map [String,Int]的成员。我添加了:.reduceByKey(_ + _) – Brigitte
你得到这个错误的原因是因为没有这样的方法。请参阅http://www.scala-lang.org/api/2.10.2/index.html#scala.collection.immutable.Map以供参考。 –
谢谢戴夫。我使用spark上下文在火花上运行我的程序。当我把它放在那里时,我再也没有任何错误,但我需要弄清楚为什么数据不正确! – Brigitte
我发现代码是完美的!仅仅因为我在Spark上运行它,答案被保存在我需要以某种方式收集它的懒惰RDD文件中。因此,我将它保存到一个文本文件并解决问题!下面是代码:
file.flatMap(线=> line.split(” “))的地图(W =>(瓦特,1))reduceByKey(+).saveAsTextFile(”。OUT.txt “)
谢谢。
为什么直接使用带'.split'而不是'.split'的'.map'?地图对字符串的各个字符进行操作。 –