字数统计:
MapReduce过程:
写一个继承mapper的类,声明输入(基本固定)输出(看需求)类型
重写map(K,V,context),map方法会被调用多次,每次调用map方法读取split传过来的一行数据,需要将这一行数据切割(StringTokeizer类,默认看空格切割)
While遍历,通过context输出
要书写一个程序主入口类,将程序打包发给JobTracker(移动计算而不是移动数据)
注意,这里因为是本地的程序,将程序打成xxx.jar包,放入namenode节点的服务器上执行
Hadoop/bin有个hadoop命令
#./hadoop (回车) 展开所有和hadoop组合的命令
#./hadoop jar path/xxx.jar ww.cola.JobRun
------------------------------------------------------------------
好友推荐系统:笛卡尔积运算
一对朋友的关系,每个个体既是主又是从,即一个人又做K又做V,
因此map处理后的数据会增加,每调用一次map方法,输出两次数据,且K和V
对调。
Map过程:
在经过系统默认shuff处理,对相同K值得数据进行了合并
出现如下形式:(Key和Value用冒号隔开):
A:B C D E //要处理他们之间可能的关系,只要将Value值做笛卡尔积
B: G
C:F
。。。
。。
Reduce过程:
用Set存储因为可以去重
---------------------------------------------------------------------------------
精准广告推送:并且按照关注度由高到底排序
案例:在新浪微博中给小米手机打广告,找到那些关注手机的人,这些用在一登录后就弹出广告,并按关注度高低排序。
关注度权重公式:W=TF*Log(N/DF) (打分)
TF:当前的关键字在该片微博内容中出现的次数
DF:当前的关键字在所有微博中内容中出现的条数,比如,“小米”,在某条微博中出现4次,只记为1条数据
N:微博总数
结果显示:(为了减少磁盘内容的开销,将不同关键词用唯一数字标识)
微博的id 关键词1:分数 关键词2:分数 关键词3:分数 ….
之后我会专门写一篇博客
原文地址:http://icola.blog.51cto.com/5412204/1786069