Scala-Actor并行wordcount

scala-2.10.6


文件:

"d://word.txt", "d://word.log"

文件内容:



代码:

package cn.zengmg.day26.actorimport scala.actors.{Actor, Future}
import scala.collection.mutable.ListBuffer
import scala.io.Sourcecase class SubmitFile(filePath: String)class ActorWordCount extends Actor {override def act(): Unit = {loop {react {case SubmitFile(filePath) => {val words = Source.fromFile(filePath).getLines()val result = words.toList.flatMap(_.split(" ")).map((_, 1)).groupBy(_._1).mapValues(_.foldLeft(0)(_ + _._2))sender ! result}}}}
}object ActorWordCount {def main(args: Array[String]): Unit = {//发送异步消息,返回值是 Future[Any]。val futures = new ListBuffer[Future[Any]]//存放每个文件统计得结果val results = new ListBuffer[Map[String, Int]]val files = Array("d://word.txt", "d://word.log")for (f <- files) {val t = new ActorWordCountt.start()//调用就会返回值,但该值不是真正的计算结果,可以理解为放结果的一个容器,isSet的值为false。val future=t !! SubmitFile(f)futures+=future}while(futures.size>0){val validResult=futures.filter(_.isSet)if(validResult.size>0){//result 类型 Future[Any]。for(result<-validResult){results+=result.apply().asInstanceOf[Map[String, Int]]futures-=result}}}val finalRsult = results.flatten.groupBy(_._1).mapValues(_.foldLeft(0)(_+_._2))println("未排序:"+finalRsult)val sortFinalRsult=finalRsult.toList.sortBy(_._2).reverseprintln("排序:"+sortFinalRsult)}}


运行结果:


未排序:Map(wecki -> 7,  -> 1, rerex -> 7, kljk -> 7, oppyed -> 7, weopc -> 7, tom -> 8, aadkj; -> 7, sdlkjfsfsad -> 7, xe;q -> 7, kl;xjljks -> 7, djkdsfsadf -> 7, hello -> 16, jerry -> 8, weweioe -> 7, wiot -> 7)


排序:List((hello,16), (jerry,8), (tom,8), (wiot,7), (weweioe,7), (djkdsfsadf,7), (kl;xjljks,7), (xe;q,7), (sdlkjfsfsad,7), (aadkj;,7), (weopc,7), (oppyed,7), (kljk,7), (rerex,7), (wecki,7), (,1))



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/538422.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小程序测试用例模板_微信小程序样式:高质量小程序样式模板大全

新手想要制作出美观的小程序&#xff0c;你需要多参考一些好看的微信小程序样式。今天就带大家分析几个高质量小程序的样式&#xff0c;看看别是怎么把小程序做得美观又吸引人的&#xff1a;1.电商小程序样式电商小程序首页一般是按照“图片banner - 快捷按钮 - 商品及分类”的…

Sql Server 2016数据库生成带数据的脚本

步骤&#xff1a;右键点击对应数据库->任务->生成脚本 在弹出的会话框中选择需要的对象&#xff0c;点击下一步&#xff0c;在设置和编写脚本选项中&#xff0c;点开高级按钮&#xff08;如图&#xff09;选择架构和数据点击确定就可以了。 提醒&#xff1a;如果你在数据…

深入理解Scala的隐式转换系统

原文链接&#xff1a;http://www.cnblogs.com/MOBIN/p/5351900.html----------------------------------------------摘要&#xff1a;通过隐式转换&#xff0c;程序员可以在编写Scala程序时故意漏掉一些信息&#xff0c;让编译器去尝试在编译期间自动推导出这些信息来&#xf…

python123输出最大值_Python:运行另一列的最大值?

我有一个像这样的数据帧&#xff0c;它跟踪特定项(ID)的值随时间的变化&#xff1a;mytimenp.tile( np.arange(0,10) , 2 )myidsnp.repeat( [123,456], [10,10] )myvaluesnp.random.random_integers(20,30,10*2)dfpd.DataFrame()df[myids]myidsdf[mytime]mytimedf[myvalues]myv…

Java连接MySQL

2019独角兽企业重金招聘Python工程师标准>>> <1> 在navicat中创建一个MySQL连接&#xff0c;填写连接名和密码&#xff08;密码为你配置MySQL设置的密码&#xff09; <2> 在该连接中新建一个数据库&#xff0c;填写数据库名。字符集选择&#xff08;gb-…

ssm实训报告心得_Java开发学习心得(一):SSM环境搭建

Java开发学习心得&#xff08;一&#xff09;&#xff1a;SSM环境搭建有一点.NET的开发基础&#xff0c;在学校学过基础语法&#xff0c;对JAVA有点兴趣&#xff0c;就简单学习了一下&#xff0c;记录一下从哪些方面入手的&#xff0c;暂时不打算深入到原理方面&#xff0c;先简…

Java中boolean类型占用多少个字节

原文地址&#xff1a;http://www.cnblogs.com/wangtianze/p/6690665.html?utm_sourceitdadao&utm_mediumreferral ----------------------- 为什么要问这个问题&#xff0c;首先在Java中定义的八种基本数据类型中&#xff0c;除了其它七种类型都有明确的内存占用字节数外…

java虚引用作用_深入理解Java中的引用(二)——强软弱虚引用

深入理解Java中的引用(二)——强软弱虚引用在上一篇文章中介绍了Java的Reference类&#xff0c;本篇文章介绍他的四个子类&#xff1a;强引用、软引用、弱引用、虚引用。强引用(StrongReference)强引用是我们在代码中最普通的引用。示例代码如下&#xff1a;Object o new Obje…

SQL查询表的列名

SELECT COLUMN_NAME FROM DBA_TAB_COLUMNS WHERE TABLE_NAME DT4_JOB_CHECK_MATRIX;SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE TABLE_NAME DT4_JOB_CHECK_MATRIX;SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME DT4_JOB_CHECK_MATRIX;

java老鸟123怎么样_java入门123——一个老鸟的java学习心得.doc

java入门123——一个老鸟的java学习心得java入门123——一个老鸟的java学习心得篇一&#xff1a;java初学者学习心得学习Java心得体会学习了一学期的Java课程,觉得是该总结自己的心得体会了。开始学习任何一门课(包括java)&#xff0c;兴趣最重要。一直觉得自己在学计算机编程语…

ruby 爬虫爬取拉钩网职位信息,产生词云报告

思路&#xff1a;1.获取拉勾网搜索到职位的页数 2.调用接口获取职位id 3.根据职位id访问页面&#xff0c;匹配出关键字 url访问采用unirest&#xff0c;由于拉钩反爬虫&#xff0c;短时间内频繁访问会被限制访问&#xff0c;所以没有采用多线程&#xff0c;而且每个页面访问时间…

评论语义分析 分词 分类python_用python调用ICTCLAS50进行中文分词

直接上源码吧tokenizer类&#xff1a;#_*_encoding:utf-8_*_from ctypes import *class tokenizer:def __init__(self):self._stext[、,“,”,&#xff0c;,。,《,》,&#xff1a;,&#xff1b;,!,‘,’,?,&#xff1f;,&#xff01;,, ,] #枚举标点符号包括空格self._stopwor…

java对日期Date类进行加减运算、年份加减,月份加减

JAVA处理日期时间常用方法&#xff1a; 1.Java.util.Calendar Calendar 类是一个抽象类&#xff0c;它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法&#xff0c;并为操作日历字段&#xff08;例如获得下星期的日期&#xff09…

idle扩展插件_Python3.4学习笔记之 idle 清屏扩展插件用法分析

本文实例讲述了Python3.4 idle 清屏扩展插件用法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;python idle 清屏问题的解决&#xff0c;使用python idle都会遇到一个常见而又懊恼的问题——要怎么清屏?在stackoverflow看到这样两种答案&#xff1a;1.在shell中输入…

内存堆和栈的区别

原文链接&#xff1a;http://www.cnblogs.com/lln7777/archive/2012/03/14/2396164.html -------------------------------------------------------------------------------- 在计算机领域&#xff0c;堆栈是一个不容忽视的概念&#xff0c;我们编写的C语言程序基本上都要用…

MYSQL安装和配置

Win10安装MySQL5.7.22 解压缩版&#xff08;手动配置 1.下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/5.7.html#downloads 直接点击下载项 下载后&#xff1a; 2.可以把解压的内容随便放到一个目录&#xff0c;我的是如下目录&#xff08;放到C盘的话&#xff0…

python删除过期文件_python删除过期文件的方法

本文实例讲述了python删除过期文件的方法。分享给大家供大家参考。具体实现方法如下&#xff1a;# remove all jpeg image files of an expired modification date mtime# you could also use creation date (ctime) or last access date (atime)# os.stat(filename) returns …

【很久之前的一篇老文章】一位程序员工作10年总结的13个忠告

展望未来&#xff0c;总结过去10年的程序员生涯&#xff0c;给程序员小弟弟小妹妹们的一些总结性忠告。 走过的路&#xff0c;回忆起来是那么曲折&#xff0c;把自己的一些心得体会分享给程序员兄弟姐妹们&#xff0c;虽然时代在变化&#xff0c;但是很可能你也会走我已经做过的…

apply()与call()的区别

一直都没太明白apply()与call()的具体使用原理&#xff0c;今日闲来无事&#xff0c;决定好好研究一番。 JavaScript中的每一个Function对象都有一个apply()方法和一个call()方法&#xff0c;它们的语法分别为&#xff1a; /*apply()方法*/ function.apply(thisObj[, argArray]…

java代码执行了两次_Java中JComboBox的itemStateChanged事件执行两次的解释

今天做项目&#xff0c;用到了JComboBox&#xff0c;即下拉列表框。为了在被选中的项发生改变时获得被选中的项&#xff0c;所以使用的ItemStateChanged事件&#xff0c;可是问题就来了&#xff0c;每次触发该事件&#xff0c;它都执行两次&#xff0c;屡试不爽。一开始以为是代…