Paper链接:http://www.cs.umd.edu/~samir/498/Amazon-Recommendations.pdf
博客链接:http://www.xysay.com/amazon-item-to-item-collaborative-filtering-207.html
分布式处理
重编号
- 功能是,为了避免数据倾斜,以及本来是string类型的id
- 就是分桶,每个桶预设了默认的起始,比如1000000、2000000,依次自增
做归一化
- 观察cos距离公式,其实就可以是向量各自除以它的模,再相乘,为了后面分布式的处理
分块分发
- 为了在MR里实现,分块处理。比如分成四块,那算相似度,可以看成是下面的两个的相乘
- 其实上面的分块,对应的就是一个4*4的行列式,如下图,所以,在map阶段,分为“left”“right”两种类型,每份数据map多次,map到不同的多个reducer里面
- 然后,根据left right的标示,就知道该计算计算哪个了。
- 最后,再做一次取top就行了。