MapReduce入门

先贴一战mr流程图,新手朋友不要看见这个图就头晕,我们后续会使用java API实现几个案例,帮助我们更好的理解各个环节,比如切片,文件读取,Map,combine,Reduce,shuffle等等。案例写完以后相信对mr流程会有一个比较深刻的理解。

 

 

 具体的太理论的东西没什么好讲的,我们这里比较偏重于实操。

比如一个文档,里面有这么几个单词,我们要用代码实现统计各个单词数量的。

这个文档长这样:

 

 

 比如这里有一个很大的文档,里面有很多英语单词,我要看看那些单词使用频率高,我就要统计这里面各个单词出现的次数,既然要用代码实现,那些把手指头伸出来准备数手指头的同学先把手缩回去,我们就不数手指头了。实际文件长这样:.

 

 

 

好了,不扯淡了,继续。既然要用代码实现,那我们就先整理一下思路:

首先我们要读取这个文件(不要跟我说要先创建文件之类的话,我们现在说的是mr的大体框架)

1,读取数据。按行读取数据。第一行,有hello和world两个单词,第二行有hello和Scala两个单词等等等等。

2,按空格切分数据。比如第一行,我们得到两个单词:hello和world。

3,将两个单词放到一个map集合中map("hello",1),map("world",1)这个map的key就是一个单词,value就是1,表示这个单词出现了一次。以前五行为例,就得到了这么一个玩意儿:

 

 

 4,现在我们把相同key的数据统计到一起,并且累加value值

 

 实际上就是两部,分(map),合(reduce)两个。有点天下大势,合久必分,分久必合的意思啊。

 

posted @ 2022-04-07 21:44  码码小菜鸟  阅读(63)  评论(0)    收藏  举报