MSD 的推荐系统项目还挺有意思的,基于 Amazon 百万歌曲数据集,用了 MapReduce 做大规模数据,再加上朴素贝叶斯搞了个年份预测,算是个数据挖掘+推荐的组合拳。Java Hadoop 那部分代码写得比较实在,不花哨但挺清楚,跑在 EC2 上也稳定。后端是 Django,接了 PostgreSQL,把 MapReduce 的输出结果塞进去,Android 端来消费这些数据,响应也快,接口比较干净。
MSD-mapred 的NaiveBayesClassifier
是核心,主要负责模型训练,代码结构清晰,变量命名还算靠谱,逻辑一看就懂。你要是刚接触Hadoop Streaming
,这个项目还蛮适合当模板的,能学到不少 MapReduce 的落地写法。
MSD-django 部分比较轻量,用的都是常规套路,views.py
负责 API 接口,models.py
对接数据库。Django ORM 配合 PostgreSQL 读取结果,还挺顺滑。部署在 EC2 上,稳定性还不错,响应时间也能接受。
MSD-android 是个比较实用的小 Demo,页面不复杂,重点是怎么和 Django 后端打通。从推荐接口里拉取歌曲数据,做个基本的推荐列表,顺便还能预测歌曲年份。对做移动端的朋友来说,拿来练手挺好。
项目整体偏工程实现,不是炫技那种,但各环节都打通了。要是你想做个简单又完整的推荐系统 DEMO,又不想自己搭全套数据链路,这项目就挺合适的。
哦对了,感兴趣的话你也可以看看并行计算和数据挖掘相关资料,像MapReduce和数据挖掘推荐书目,对理解这个项目背后的思路也有。