使用SBT开发Akka第一个案例源码解析MapActor、ReduceActor、AggregateActor

学习了使用SBT开发Akka第一个案例源码解析MapActor、ReduceActor、AggregateActor,应用MapActor对单词计数,发信息给ReduceActor,对信息进行local级的汇总,然后交给AggregateActor。

案例如下:

class MapActor(reduceActor: ActorRef) extend Actor{

val STOP_WORDS_LIST=List("a","is")

deg receive: Receive={

case message: string=>

reduceActor ! evaluateExprssion(message)

case _=>

}

def evaluateExpression(line:String):MapData={

var dataList=new ArrayList[word]

var parser:StringTokenizer=new StringTokenizer(line)

var defaultCount: Tnteger=1

while (parser.hasMoreTokens()){

var word:String=parser.nextToken().toLowerCase()

if (!STOP_WORDS_LIST.contains(word)){

dataList.add(new Word(word, defaultCount))

}

}

return new MapData(dataList)

}

}

class ReduceActor(aggregateActor: ActorRef) extend Actor{

def receive : Receive = {

case message : MapData =>

aggregateActor ! reduce(message.dataList)

case _ =>

}

def reduce(dataList : ArrayList[word]);ReduceData={

var reducedMap = new HashMap[Sting,Integer]

for (wc:word <-dataList) {

var word: String =wc.word

if (reduceMap.containsKey(word){

reduceMap.put(word,reduceMap.get(word)+1)

} else{ reduceMap.put(word,1) }

}

return new ReduceData(reduceMap)}

}

class AggregateActor extend Actor {

var finalReduceMap = new HashMap[string, Integer]

def receive: Receive ={

case message: ReduceData =>

aggregateInMemoryReduce(message.reduceDataMap)

case message : Result =>

System.out.println(finalReduceMap.toString())}

def aggregateInMemoryReduce(reducedList: HashMap[String,Integer]){

var count: Integer =0

for (key <- reduceList.keyset){

if ( finalReduceMap.containsKey(key)){

count = reducedList.get(key)

count+=finalReduceMao.get(key)

finalReducedMap.put(key,count)

}else{ finalReducedMap.put(key,reducedList.get(key))}

}

}

}

}

DT大数据梦工厂Scala视频于今日更新突破100集!风雨同舟,感谢各位大数据爱好者的持续学习和支持!(DT大数据梦工厂1至100集scala的所有视频、PPT和代码在百度云盘的链接: http://url.cn/fSFPjS )

时间: 2024-08-16 08:47:45

使用SBT开发Akka第一个案例源码解析MapActor、ReduceActor、AggregateActor的相关文章

Scala 深入浅出实战经典 第97讲:使用SBT开发Akka第一个案例环境搭建详解

安装sbt插件 File -> Setting... -> Plugins -> 输入sbt -> 选择SBT -> 点击安装按钮. Idea会重启. New Project -> Scala -> SBT -> 输入工程名称. DT大数据梦工厂微信公众账号:DT_Spark. DT大数据梦工厂的微信公众号是DT_Spark,每天都会有大数据实战视频发布,请您持续学习. 王家林DT大数据梦工厂scala的所有视频.PPT和代码在百度云盘的链接:http://

Scala 深入浅出实战经典 第99讲:手动Artifacts打包并运行SBT开发Akka第一个案例

打包成jar包的方式: File -> Project structure -> Artfact -> 点+ -> JAR -> From modules with dependencies... -> 选择module -> 可指定Main class -> 点击OK DT大数据梦工厂微信公众账号:DT_Spark. DT大数据梦工厂的微信公众号是DT_Spark,每天都会有大数据实战视频发布,请您持续学习. 王家林DT大数据梦工厂scala的所有视频.P

使用jqplot创建报表(一) 初学后写的第一个案例源码

一.初学后写的第一个案例源码 效果图: 代码如下: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ include file="common.jsp"%> <html> <head> <script type="text/javascript" src=&q

Android开发学习之路-Volley源码解析

从简单的StringRequest入手看看Volley的工作机制. 先简单说下Volley的用法: ① 获取一个RequestQueue mRequestQueue = Volley.newRequestQueue(this); ② 构造一个StringRequest对象 mStringRequest = new StringRequest(url, new Response.Listener<String>() { @Override public void onResponse(Strin

adaboost案例源码解析

问题: 马疝气病判断训练数据: 299行, 22列, 其中最后一列为标签, 例:2.000000 1.00000038.500000 66.00000028.000000 3.0000003.000000 0.0000002.000000 5.0000004.000000 4.0000000.000000 0.0000000.000000 3.0000005.000000 45.0000008.400000 0.0000000.000000 -1.0000001.000000 1.0000003

Akka第一个案例动手实战开发环境的搭建

学习了Akka第一个案例动手实战开发环境的搭建, 采用IDEA 搭建AKKa的环境,快捷方便,相关的mave和其他的jar包可以自动加载. 王家林亲授<DT大数据梦工厂>大数据实战视频“Scala深入浅出实战经典”视频.音频和PPT下载!第92讲:Akka第一个案例动手实战开发环境的搭建 百度云盘:http://pan.baidu.com/s/1dDub8DN腾讯微云:http://url.cn/WYPW3Z360云盘:http://yunpan.cn/cm6u6NqEeLEeh  访问密码 

Akka第一个案例动手实战开发消息实体类

学习了Akka第一个案例动手实战开发消息实体类,应用mapdata对单词级数,应用reduce对计数进行汇总,通过akka进行相互的消息通信. 代码案例如下: package akka.dt.app.messages; import java.util.List public class MapData{ privatie List<WordCount> dataList; public List<WordCount> getDataList()  {return dataList

Akka第一个案例动手实战main方法实现中ActorSystem等代码详解

学习了Akka第一个案例动手实战main方法实现中ActorSystem等代码详解,创建ActorSystem实例,用acterOf创建MasterActor,用tell的方式给MasterActor发信息,睡眠一段时间给MasterActor发信息,处理完后关闭,资源回收. 案例如下: public static void main(String[] args) throws Exception{ ActorSystem_system =  ActorSystem.create("HelloA

Java利用webservice创建接口案例源码

环境要求: JDK1.7,并配置Java的环境变量 BaseDao  接口: /** * 要使得成为一个可供访问的接口,必须添加:@WebService * */ @WebServicepublic interface BaseDao {    //添加一个加法的接口        @WebResult(name="addddddre")    public int add(@WebParam(name="add01")int a,@WebParam(name=&q