以个性化新闻推荐为例,整个过程分成两个mapreduce阶段,由于hadoop流不支持多个mapreduce过程的自动化,所以所有mapreduce过程命令必须人工一个一个的执行。
1、首先需要将原始数据处理成如下形式的两个文件
文件一:Item_user_score.txt
格式:物品—用户—分数
如下图中第一行,物品100655565被用户1634974浏览过,则将分数记为1
文件二:Item_Item_number.txt
格式:物品—物品—相似度
如下图中第二行,物品100654360与物品100650498同时被两个用户浏览过
2、矩阵乘法
其实文件一和文件二分别保存着一个矩阵,第二步就是要做矩阵乘法。
step1mapper.py
#!/usr/bin/env python
"""A more advanced Reducer, using Python iterators and generators."""
from itertools import groupby
from operator import itemgetter
import sys
def read_mapper_output(file, separator='\t'):
for line in file:
yield line.strip().split(separator,1)
def main(separator='\t'):
# input comes from STDIN (standard input)
datas = read_mapper_outpu

本文介绍了如何利用Hadoop流将原始数据转化为适合协同过滤算法的格式,并通过两个MapReduce阶段进行矩阵乘法和结果融合,实现推荐系统的计算过程。在每个阶段,详细说明了mapper和reducer的功能,并提供了执行命令。
最低0.47元/天 解锁文章
3412

被折叠的 条评论
为什么被折叠?



