您的位置:首页 > 其它

最大,最小值问题,前K个数问题,利用mapreduce解决方案

2016-11-21 17:40 337 查看
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中的数据排序,写出

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐