使用scala实现wordcount的简单计数
来源:互联网 发布:程序员试用期转正申请 编辑:程序博客网 时间:2024/05/14 11:52
package wordCountimport scala.actors.{Actor, Future}import scala.collection.mutable.ListBufferimport scala.io.Source/** * Created by Adminstrator on 2017/6/10. */class MyActorWC extends Actor{ override def act(): Unit = { loop { react { case WordCount(filePath) => { val strList: List[String] = Source.fromFile(filePath).getLines().toList val values: Map[String, Int] = strList.flatMap(_.split(" ")).map((_, 1)).groupBy(_._1).mapValues(_.size)// sender ! SendResult(values) sender ! values } case StopProcess() => { exit() } } } }}case class WordCount(var filePath : String)case class StopProcess()case class SendResult(var result : Map[String,Int])object MyWordCount extends App{// val re = ListBuffer[Future[Any]]()// val resultMap = ListBuffer[Map[String,Int]]() val re = new ListBuffer[Future[Any]] val resultMap = new ListBuffer[Map[String,Int]] val path = Array("E:\\大数据(临时存放目录)\\测试数据\\a.txt","E:\\大数据(临时存放目录)\\测试数据\\b.txt","E:\\大数据(临时存放目录)\\测试数据\\c.txt") for (i <- path){ val m = new MyActorWC m.start() val future: Future[Any] = m !! WordCount(i) re += future } while (re.size>0){ val futures: ListBuffer[Future[Any]] = re.filter(_.isSet) for(j <- futures){ val reMap: Map[String, Int] = j.apply().asInstanceOf[Map[String,Int]] resultMap += reMap re -= j } Thread.sleep(1000) } println("计数结果---》》"+resultMap.flatten.groupBy(_._1).mapValues(_.foldLeft(0)(_+_._2)))}
注意的地方:一:val表示值不可变或者引用不可变,如果是List或者Map,它们的元素是可以改变的。
二:val re = ListBuffer[Future[Any]]()引入的是不可变的List,同理Map也一样,如果使用可变的需要new
三:j.apply().asInstanceOf[Map[String,Int]]注意异步发送消息返回的类型是否一致,
如果返回对象不能使用map接收
阅读全文
0 0
- 使用scala实现wordcount的简单计数
- WordCount的Scala实现
- 使用 scala 实现单机版 WordCount
- WordCount 的 Java 和 Scala 实现
- 用scala实现wordcount
- Scala实现WordCount功能
- scala 实现WordCount
- scala实现wordcount
- MapReduce实现简单的Wordcount
- 使用Scala实现文件单词计数
- Scala写的wordcount
- scala版本的wordCount
- Scala使用MurmurHash3实现简单的BloomFilter
- Spark实现WordCount单词计数
- kafka stream实现wordcount计数
- maven构建Scala程序,实现spark的wordcount
- 使用scala的Actor模拟计算多文件WordCount
- MapReduce 的简单例子 WordCount的实现
- HDU-5981-Guess the number-规律
- 泡影产品需求设计文档
- bzoj3122 随机数生成器 BSGS+费马小定理求逆元
- HashMap与HashTable详解与区别
- 洛谷 P1829 半数集问题
- 使用scala实现wordcount的简单计数
- [leetcode]508. Most Frequent Subtree Sum
- JAVA学习笔记——List集合
- jquery/css实现步骤条
- 大端和小端
- SSH理论学习总结
- 买卖股票的最佳时机
- SSM框架
- ubuntu中开启、关闭防火墙