阿里大数据题目,请问怎么设计算法比较好呢
2014-04-12 09:06
429 查看
某B2C网站有1亿用户和200万商品,每一个用户都有自己喜欢的若干件商品,如果两个用户都喜欢同一件商品,我们定义中两个用户有一个“同好商品”,“同好度”为两个用户的同好商品数和这两个用户中至少有一人喜欢的商品数的比值。同好度衡量了两个用户之间的商品喜好的接近程序,这有着十分重要的用途。
请设计一个算法,计算每一个用户的同好用户集合及同好度。
输入数据:多个文件,每个文件的数据有多行,每一行的数据格式如下:用户ID喜欢的商品ID1 喜欢的商品ID2 .......喜欢的商品n,其中用户ID和商品ID均为32位整数,中间以空格分隔。
如:
16 1001 1002 3003
输出数据:一个或多个文件,每一行的数据格式如下:
用户ID 同好用户ID1:同好度 同好用户ID2:同好度...... 同好用户IDn:同好度
中间以空格隔开。算法可以描述为伪代码。
我觉得如果你知道mapreduce 你就应该知道思路
如果不知道mapreduce 我说了思路也没用
不过anyway
假设数据没有冗余(如果有先dedup处理)
第一组mapreduce
mapper输入的是源文件的一行,输出1是kv<商品id, 用户id>,就是从商品到用户的逆映射,输出2是kv<用户id, 爱好数量>
reducer输入是mapper的输出1,输出的是kv<A用户id, B用户id> 和kv<B用户id, A用户id>
第二组mapreduce
mapper输入是第一组reducer的输出,直接输出数据
reducer输入的是mapper的输出,输出的是kv<用户id, list<pair<同好用户, 同好度>>> ,计算方法是每个用户累加同好用户出现次数,最后的和就是同好商品数量(交集的size),用两个用户的爱好数量之和减去交集size就是并集的size,自然可以算出同好度(第一组mapper的输出2在内存中建hashmap用来查询用户的爱好数量)
我觉得如果你知道mapreduce 你就应该知道思路
如果不知道mapreduce 我说了思路也没用
不过anyway
假设数据没有冗余(如果有先dedup处理)
第一组mapreduce
mapper输入的是源文件的一行,输出1是kv<商品id, 用户id>,就是从商品到用户的逆映射,输出2是kv<用户id, 爱好数量>
reducer输入是mapper的输出1,输出的是kv<A用户id, B用户id> 和kv<B用户id, A用户id>
第二组mapreduce
mapper输入是第一组reducer的输出,直接输出数据
reducer输入的是mapper的输出,输出的是kv<用户id, list<pair<同好用户, 同好度>>> ,计算方法是每个用户累加同好用户出现次数,最后的和就是同好商品数量(交集的size),用两个用户的爱好数量之和减去交集size就是并集的size,自然可以算出同好度(第一组mapper的输出2在内存中建hashmap用来查询用户的爱好数量)
请设计一个算法,计算每一个用户的同好用户集合及同好度。
输入数据:多个文件,每个文件的数据有多行,每一行的数据格式如下:用户ID喜欢的商品ID1 喜欢的商品ID2 .......喜欢的商品n,其中用户ID和商品ID均为32位整数,中间以空格分隔。
如:
16 1001 1002 3003
输出数据:一个或多个文件,每一行的数据格式如下:
用户ID 同好用户ID1:同好度 同好用户ID2:同好度...... 同好用户IDn:同好度
中间以空格隔开。算法可以描述为伪代码。
我觉得如果你知道mapreduce 你就应该知道思路
如果不知道mapreduce 我说了思路也没用
不过anyway
假设数据没有冗余(如果有先dedup处理)
第一组mapreduce
mapper输入的是源文件的一行,输出1是kv<商品id, 用户id>,就是从商品到用户的逆映射,输出2是kv<用户id, 爱好数量>
reducer输入是mapper的输出1,输出的是kv<A用户id, B用户id> 和kv<B用户id, A用户id>
第二组mapreduce
mapper输入是第一组reducer的输出,直接输出数据
reducer输入的是mapper的输出,输出的是kv<用户id, list<pair<同好用户, 同好度>>> ,计算方法是每个用户累加同好用户出现次数,最后的和就是同好商品数量(交集的size),用两个用户的爱好数量之和减去交集size就是并集的size,自然可以算出同好度(第一组mapper的输出2在内存中建hashmap用来查询用户的爱好数量)
我觉得如果你知道mapreduce 你就应该知道思路
如果不知道mapreduce 我说了思路也没用
不过anyway
假设数据没有冗余(如果有先dedup处理)
第一组mapreduce
mapper输入的是源文件的一行,输出1是kv<商品id, 用户id>,就是从商品到用户的逆映射,输出2是kv<用户id, 爱好数量>
reducer输入是mapper的输出1,输出的是kv<A用户id, B用户id> 和kv<B用户id, A用户id>
第二组mapreduce
mapper输入是第一组reducer的输出,直接输出数据
reducer输入的是mapper的输出,输出的是kv<用户id, list<pair<同好用户, 同好度>>> ,计算方法是每个用户累加同好用户出现次数,最后的和就是同好商品数量(交集的size),用两个用户的爱好数量之和减去交集size就是并集的size,自然可以算出同好度(第一组mapper的输出2在内存中建hashmap用来查询用户的爱好数量)
相关文章推荐
- PTA 数据结构与算法题目集(中文)6-9
- 多套日历的编码怎么设计数据表?
- (最优解)阿里笔试题请设计一个算法,在满足质因数仅为3,5,7或其组合的数中,找出第K大的数。比如K=1,2,3时,分别应返回3,5,7。要求算法时间复杂度最优。
- Sicily 算法设计题目
- C语言 数据结构题目一道 在线等答案~快~试写一符合上述要求的LocateNode运算的算法。
- 大数据早报:时装设计也用上了人工智能,亚马逊研究出新算法;上海地铁趣味消费数据发布(9.12)
- 设计之数据结构和算法的分离
- 大数据算法MOOC笔记2:大数据算法定义、分析与设计
- 数据结构和算法设计专题之---二分查找(Java版)
- 算法设计与分析题目练习三:骑士旅游问题(回溯算法)
- Pku acm 1125 Stockbroker Grapevine 数据结构题目解题报告(八)---- 弗洛伊德(floyd)算法
- 我要从com向应用程序返回一个结构,结构中包括二进制数据,请问用什么方式传替比较好呢?BSTR,VARIANT还是其他什么类型比较好呢
- 一个网站要提供很多种商品和信息 当然就有很多分类了 请问数据库怎么设计阿?
- 算法题目---二维数据中的查找
- Java200套2500G架构师视频,涵盖:分布式、集群、大数据、算法、设计模式、支付结算、在线视频、P2P,Q4407509
- 课程表的SQL数据表应该怎么设计才方便
- PTA 数据结构与算法题目集(中文)6-6
- 汤晓鸥谈深度学习三大核心要素:算法设计、高性能的计算能力以及大数据
- Zedboardwebcam设计问题篇(六)opencv处理帧数据之算法改进
- 输入法核心数据结构及算法的设计