阿里大数据题目,请问怎么设计算法比较好呢
来源:互联网 发布:联通手机网络id 编辑:程序博客网 时间:2024/04/29 11:35
请设计一个算法,计算每一个用户的同好用户集合及同好度。
输入数据:多个文件,每个文件的数据有多行,每一行的数据格式如下:用户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用来查询用户的爱好数量)
- 阿里大数据题目,请问怎么设计算法比较好呢
- 请问C#看什么书比较好呢
- 网页背景怎么设计比较好
- redis这些内存消耗数据怎么看呢,主要看哪个说明内存比较大了?
- 我要从com向应用程序返回一个结构,结构中包括二进制数据,请问用什么方式传替比较好呢?BSTR,VARIANT还是其他什么类型比较好呢
- 我要从com向应用程序返回一个结构,结构中包括二进制数据,请问用什么方式传替比较好呢?BSTR,VARIANT还是其他什么类型比较好呢
- 怎么理解什么是大数据呢?
- 请问怎么更改排序规则呢
- 请问~iOS怎么实现分段柱状图呢?
- 怎么恢复回收站的数据比较好
- git branch和git tag 请问怎么取得git 打好的tag所对应的代码呢?
- 请问谁使用过vs 2005水晶报表阿、Sql Server Reporting Services呢?如果要做一个B/s报表系统,用哪个比较好呢?
- 这个问题怎么解释好呢?
- 网页内容怎么设计对用户比较好!
- 请问怎么更改排序规则呢 (转载收藏)
- 请问应该怎么做才能使用这些插件呢?
- 请问在终端中怎么查看上一屏的信息呢
- 请问这两幅图像怎么做图像匹配呢?
- cocos2d-x学习之格斗游戏总结(2)
- cocos2d-x 易错的内存泄露
- Effective C++——》条款22:将成员变量声明为private
- USB,蓝牙,以太网,还是WIFI?
- 阿里云 大数据 推荐系统
- 阿里大数据题目,请问怎么设计算法比较好呢
- 点击actionbar左侧图标,实现返回效果
- Webx3源码分析-容器结构
- RGB转YUV422
- Android 平台framerwork层jar的添加
- 通过ajax和form提交 转向
- 自动下载coursera课程资料
- linux命令: ps、grep、kill
- 忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(3)输入输出函数