Hadoop/Spark推荐系统(一)——共同好友
2017-09-22 19:30
886 查看
输入
mapper-input: #好友关系是对称的,整个数据的关系边是偶数(u1,[f1,f2,f3])
(u2,[f2,f3])
(f1,[u1,f3])
(f2,[u1,u2])
(f3,[u1,u2,f1])
mapper-output
将一条用户的好友列表数据,拆成这个用户每个好友对为key的表示形式(key的表示字母或数字有序),value依然为好友里列表形式,共12组([f1,u1],[f1,f2,f3])
([f2,u1],[f1,f2,f3])
([f3,u1],[f1,f2,f3])
([f2,u2],[f2,f3])
([f3,u2],[f2,f3])
([f1,u1],[u1,f3])
([f1,f3],[u1,f3])
([f2,u1],[u1,u2])
([f2,u2],[u1,u2])
([f3,u1],[u1,u2,f1])
([f3,u2],[u1,u2,f1])
([f3,f1],[u1,u2,f1])
shuffle-output
依照对称性,key相同的合并,数量正好减少一半,为6组([f1,u1],[f1,f2,f3],[u1,f3])
([f2,u1],[f1,f2,f3],[u1,u2])
([f3,u1],[f1,f2,f3],[u1,u2,f1])
([f2,u2],[f2,f3],[u1,u2])
([f3,u2],[f2,f3],[u1,u2,f1])
([f1,f3],[u1,f3],[u1,u2,f1])
reduce-output
找出value里的两个list里重复的元素,即为共同好友([f1,u1],[f3])
([f2,u1],[])
([f3,u1],[f1])
([f2,u2],[])
([f3,u2],[])
([f1,f3],[u1])
MR版本
map(key,value){ reduceValue=(<friend_1><friend_2>...<friend_N>) foreach friend in (<friend_1><friend_2>...<friend_N>){ reduceKey=buildSortedKey(person,friend) emit(reducerKey,reducerValue); } } reduce(key,value){ outputValue=intersection(List_1,List_2,...,List_M) emit(key,outputCalue); }
Spark版本
map(P,{F_1,F_2,...,F_n}){ friends={F_1,F_2,...,F_N}; for(f:friends){ key = buildSortedTuple(P,f); emit(key,friends); } } reduce(key,values){ commonFriends=intersection(values); emit(key,friends) }
相关文章推荐
- hadoop求共同好友
- Hadoop/MapReduce 共同好友解决方案:求大量集合的两两交集
- 寻找共同好友(hadoop解决方案)
- Hadoop案例(三)找博客共同好友
- MapReducer-找共同好友 分类: Java hadoop 2015-06-25 22:31 71人阅读 评论(0) 收藏
- Hadoop demo 找出共同好友
- hadoop项目:社交粉丝,共同好友数据分析实现
- QQ也可以和微信一样只能共同好友见评论
- Hadoop实例:二度人脉与好友推荐
- hadoop实现共同出现的单词(Word co-occurrence)
- MapReduce分析共同好友
- Spark实现之 查找共同好友
- MapReduce--6--求共同好友
- Spark 共同好友解决方案:求大量集合的两两交集
- Hadoop/MapReduce 好友推荐解决方案
- Hadoop好友推荐系统-寻找聚类中心
- MapReduce案例4——求两两共同好友
- Mapreduce实例---共同好友
- Hadoop+集算器共同实现去IOE
- Hadoop好友推荐系统-执行分类算法