基于用户评分的电影推荐 Hadoop/spark实现

该博客介绍了如何利用MapReduce和Spark实现基于用户评分的电影推荐算法。首先通过MapReduce进行数据处理,计算用户对电影的评分及数量,然后在Spark中进行数据连接、过滤和组合,计算出电影之间的关联度,最终计算出用户之间的个人相关性、余弦相似性和杰卡德相似性。
摘要由CSDN通过智能技术生成

Mapreduce框架

输入 user1 movie1 rating

mapreduce 1阶段

map(<user>,<movie>,<rating>){

       k2=movie;

        v2=Tuple2(user, rating);

         emit(ke,v2)

 }

//key =movie

// values=List<Tuple2<user,rating>>

reduce(key,values){

          numberofraters=values.size();

         for(Tuple2<user,rating> t2:values){

                  k3=t2.user;

                  v3=Tuple3(key,,t2.rating,numberofraters);

                 emit(k3,v3);

              }

 

 }

mapreduce 第二阶段

//key=user

//value=movie,rating,numberofraters

map(key, value){

Sting [] tokens=value.split(",");

movie=tokens[0];

rating=tokens[1];

numberofraters=tokens[2];

Tuple3<String,Integer,Integer> v3=new Tuple3<movie,rating,numberofraters>;

emit(key,v3)

 }

//key=user

//values=list(Tuple3(movie,rating,numberofraters))

 

reduce(key,values){

List(Tuple2(Tuple3<movie1>,<rating1>,<numberofraters1>,Tuple3<movie2>,<rating2>,<numberofraters2>)) list=

    generateUniqueCombinations(values);

for(Tuple2(Tuple3<movie1>,<rating1>,<numberofraters1>,Tuple3<movie2>,<rating2>,<numberofraters2>) pair :list){

     m1=pair._1;m2=pair._2;

     reducekey=Tuple2(m1.movie,m2.movie);

     int ratingproduct=m1.rating*m2.rating;

     int rating1squared= m1.rating*m1.rating;

     int rating2squared=m2.rating*m2.rating;

     reducevalue=Tupl7(m1.rating,m1.numberofratins,m2.rating,m2.numberofraters,ratingproduct,rating1squared,rating2squred);

    emit(reducekey,reducevalue);

 }

mapreduce阶段3

map(key,value){emit(key,value)}

 

reduce(key, values){

    int groupsize=value.size();

    int dotproduct=0;

   int

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值