水曜日, 12月 30, 2015

Scala - ワードカウント

SparkではreduceByKeyで簡単にワードカウントができるが,scalaではfoldLeftで実装出来る.

    val x = """kiji,saru,saru#saru,inu,kiji,saru#inu,kiji,kiji#kiji#inu,inu#saru"""
    val v = x.split("#").flatMap(_.split(",")).map(s => (s,1))
    val z = v.foldLeft(Map[String,Int]())((accm, elem) => {
      if(accm.contains(elem._1))
        accm.updated(elem._1, elem._2 + accm(elem._1))
      else
        accm + elem
    })

0 件のコメント: