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


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中的数据排序,写出


 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值