wordCount(scala版本)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013803572/article/details/80757905

scala实现wordcount

  • 非简写版本
scala> val str = "a,b,c,a,b,f";
str: String = a,b,c,a,b,f

scala> val word = str.split(",")
word: Array[String] = Array(a, b, c, a, b, f)

scala> val wordMap = word.map(word => (word, 1))
wordMap: Array[(String, Int)] = Array((a,1), (b,1), (c,1), (a,1), (b,1), (f,1))

scala> val wordGroup = wordMap.groupBy(map => map._1)
wordGroup: scala.collection.immutable.Map[String,Array[(String, Int)]] = Map(b -
> Array((b,1), (b,1)), a -> Array((a,1), (a,1)), c -> Array((c,1)), f -> Array((
f,1)))

scala> val wordCount = wordGroup.map(group => group._2.reduce((a, b) => (a._1, a
._2 + b._2)))
wordCount: scala.collection.immutable.Map[String,Int] = Map(b -> 2, a -> 2, c ->
 1, f -> 1)

scala> for(e <- wordCount) {
     |   println(e._1 + ": " + e._2)
     | }
b: 2
a: 2
c: 1
f: 1
  • 简写版本
scala> val str = "a,b,c,a,b,f"
str: String = a,b,c,a,b,f

scala> str.split(",").map((_, 1)).groupBy(_._1).map(_._2.reduce((a, b) => (a._1,
 a._2 + b._2))).foreach(println)
(b,2)
(a,2)
(c,1)
(f,1)

scala>

猜你喜欢

转载自blog.csdn.net/u013803572/article/details/80757905