Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / 用MapReduce做相似度分析

Q:

有一批数据(10亿量级),数据内容包括:
类型
idINT
contentString
id为key,全局唯一
content为一个句子列之间以 分割like:
1 “互联网够公司的日志无处不在,web日志,js日志,搜索日志,监控日志等等”
2 "对于这些日志的离线分析(Hadoop),wget&rsync虽然人力维护成本较高,但可以满足功能行需求。但对于这些日志的实时分析需求(例如实时推荐,监控系统),则往往必须要引入一些“高大上”的系统"
计算每行数据的content和其他数据content的相似度
 

A:

两轮MapReduce:
第一轮:
按照一定规则分割content,并以分割后的content内容为key,value为id,reduce阶段对value做排序后两两输出,实例如下:
原始数据:
10X
20Y
30Z
假设X可以分割为A、B、C, Y可以分割为A、C、D, Z可以分割为A、D
则第一轮mapper的输出为:
<A,10>
<B,10>
<C,10>
<A,20>
<C,20>
<D,20>
<A,30>
<D,30>
使用分割后的content做key
reducer的输入为:
A{10,20,30}
B{10}
C{10,20}
D{10}
reduce计算逻辑:对value组按大小排序,排序后按序两两输出,组大小为1的不输出
reducer输出为
10,20 ----from A {10,20,30}
10,30 ----from A {10,20,30}
20,30 ----from A {10,20,30}
10,20 ----from C{10,20} 
第二轮map-reduce:
对第一轮输出的数据做聚合,value为出现次数
10,202
10,301
20,301推荐阅读:Hadoop 新 MapReduce 框架 Yarn 详解 http://www.linuxidc.com/Linux/2013-09/90090.htmHadoop中HDFS和MapReduce节点基本简介 http://www.linuxidc.com/Linux/2013-09/89653.htmMapReduce的自制Writable分组输出及组内排序 http://www.linuxidc.com/Linux/2013-09/89652.htmMapReduce的一对多连接操作 http://www.linuxidc.com/Linux/2013-09/89647.htmHadoop--两个简单的MapReduce程序 http://www.linuxidc.com/Linux/2013-08/88631.htmHadoop 中利用 MapReduce 读写 MySQL 数据 http://www.linuxidc.com/Linux/2013-07/88117.htm<!-- Baidu Button BEGIN -->