MapReduce运用之粉丝互粉

项目名称:粉丝互粉

项目说明:如下所示,分别给出微博用户信息和其粉丝信息,如第一行:“:”左边的代表用户A,右边是关注A的粉丝。

用户和粉丝之间是单向关系,也即E是A的粉丝,但是A不一定是E的粉丝。

项目需求:用mapreduce找出两两之间有共同粉丝的用户对,及他俩的共同好友。如:A-B    C,E

           A:B,C,D,F,E,O
           B:A,C,E,K
           C:F,A,D,I
           D:A,E,F,L
           E:B,C,D,M,L
           F:A,B,C,D,E,O,M
           G:A,C,D,E,F
           H:A,C,D,E,O
           I:A,O
           J:B,O
           K:A,C,D
           L:D,E,F
           M:E,F,G
           O:A,H,I,J

        需求解读:以为第一行为例进行说明:

      根据MapReduce的设置,给出的信息以文本的形式存放在一个InputPath处,在Map阶段通过RecoderReader中的read()方法每次读取文本信息的一行数据,并组装成K-V对传递给map方法,因此传入map的Key-in与Key-value分别是起始偏移量(LongWritable)和第一行的文本数据(Text):

       LongWritable   Key-in:key,Text value-in:value,

        第一次调用Map方法时的key-value="A:B,C,D,F,E,O";

       我们要找两两用户间的共同粉丝,不如先找出每个用户分别是谁的粉丝,如C是用户A,B,F,G,H,K的共同粉丝,然后再将A,B,F,G,H,K两两组合作为key-out,C作为value-out传送出去,那么reduce阶段框架自然会帮助我们将有着同一个key-out的value值组装为一个Iteratable形式的value-out,也就实现了我们的需求:找出了两两用户间的共同粉丝。

示例图:

 

示例代码:

Step1:

     

package com.itcast.bigdata.mr.fense2;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapred
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值