1,MapReduce求最大最小值问题
要想一次求得最大最小值,必须只有一个reduce
MAP类
(1)Map类中增加两个变量,max,min
(2)map函数中用取得的当前行的数据和max,min做比较,更新数据。
(3)clear函数中将max,min输出,输出格式为
<max,n1>
<min,n2>
Reduce类
(1)直接比较list中的最大值最小值,输出
2,求前K个数跟求最大值最小值类似
Map 类,
(1)Map类中增一个有K个元素的数组
(2)map函数中用取得的当前行的数据更新数组
(3)在clearup函数中输入K个数。
Reduce类
(1)Reduce类中增一个有K个元素的数组
(2)map函数中用取得的当前行的数据更新数组
(3)在clearup函数中输入K个数。
3,有一个文件150亿数据,构成是一个个的URL,现在求访问量前K个的HOST
居说可以一级mapreduce搞定,但是我想不出来方法,最后两级搞定,第一级Reduce用多个,第二级一个。
Map1类
(1)解析输入的URL
URL---->HOST+uri
输出<host,1>
Reduce1类
(1)reduce,统计每个host的访问次数
输出<host,n>
MAP2类
(1)定义一个K个大小的数组,元素为pair<host,n>
(2)读入<host,n>
以新输入的<host,n>来更新数组,
(3)在clearup中写数据到reduce.
KeyComparator类<加上以后,在Reduce2中处理前K个数就行>
修改关键字排序类,按关键字的出现次数对关键字(host)数据进行排序。
Reduce2类
(1)定义一个K个大小的数组,元素为pair<host,n>
(2)读入<host,n>
以新输入的<host,n>来更新数组,
(3)在clearup中写数据到reduce
突然想到了一个,一个MAP搞定的方法, MAP中增加一个map
(1)解析输入的URL
URL---->HOST+uri
如果map中有HOST,map[host]=map[host]+1 ,如果不存在 map[host]=1
Reduce1类
在clearup中对map中的数据排序,写出