MapReduce学习之好友推荐
来源:互联网 发布:马蓉拒绝离婚 知乎 编辑:程序博客网 时间:2024/05/12 03:30
背景
在QQ,微博等社交软件中都会有好友推荐的功能,本案例将使用MapReduce
实现一个简单的好友推荐的功能。想象一下,程序如何推荐好友呢?假设A和B为好友关系,B和C为好友关系,那么我们就假定A和C有好友关系。更复杂的情况,A和B、C均为好友关系,B、C和D均为好友关系,那么我们就假定A和D有好友关系。这样的关系可以称为二度关系。在实际过程中可以判断这种二度关系的数量进行好友推荐,或者进行三度关系的数量判断来进行推荐。
分析
数据如下形式:A BB CC DB EA Dmap阶段可以得到如下格式:Key:A Value:B DKey:B Value:C EKey:C Value:Dreduce阶段可以将value进行笛卡尔积运算就可以得到二度关系。
代码实现
java
实现如下
map 函数体:protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, Text>.Context context) throws java.io.IOException, InterruptedException { String line = value.toString(); String[] ss = line.split("\t"); context.write(new Text(ss[0]), new Text(ss[1])); context.write(new Text(ss[1]), new Text(ss[0])); };reduce 函数体:protected void reduce(Text key, java.lang.Iterable<Text> value, Reducer<Text, Text, Text, Text>.Context context) throws java.io.IOException, InterruptedException { Set<String> set = new HashSet<String>(); for(Text v : value ){ set.add(v.toString()); } if(set.size() > 1){ for (Iterator j = set.iterator(); j.hasNext();) { String name = (String) j.next(); for (Iterator i = set.iterator(); i.hasNext();) { String other = (String) i.next(); if(!name.equals(other)){ context.write(new Text(name), new Text(other)); } } } } };
运行结果如下:
reduce
阶段完成笛卡尔积运算的时候,可以用多种算法可以提高速度,这里只是简单的实现。
0 0
- MapReduce学习之好友推荐
- [hadoop]MapReduce实例之好友推荐(六)
- MapReduce实现QQ好友推荐
- MapReduce实现QQ好友推荐
- mapreduce实现QQ好友推荐
- MapReduce实现QQ好友推荐
- Hadoop/MapReduce 好友推荐解决方案
- 基于mapreduce实现好友推荐功能
- hadoop2.5.2学习11-MR之好友推荐1
- hadoop2.5.2学习11-MR之好友推荐2
- 一些算法的MapReduce实现——好友推荐
- 用hadoop2.7.1 mapreduce实现QQ好友推荐功能
- 好友推荐
- MapReduce之推荐算法实现
- MapReduce:共同好友
- Mapreduce实例---共同好友
- MapReduce寻找共同好友
- MapReduce找共同好友
- 【Struts2基础】——核心与工作原理
- Android SDK无法更新终极解决方式
- CodeForces 540A Combination Lock
- SolrColud5.2 Windows单机伪分布式部署+创建索引+搜索+测试数据
- 华为机试——数字奇偶排序
- MapReduce学习之好友推荐
- iOS监测第三方键盘高度
- mac 和 windows 连接远程服务器及文件传送
- 批量梯度下降与随机梯度下降
- SQL Update多表联合更新的方法
- IP地址规划与分类
- OC协议
- SVN项目下载后报错 maven-resources-plugin prior to 2.4 is not supported by m2e.
- 【Java】————概述