本章详细介绍了本系统的需求分析。本系统旨在实现一个用户不仅能方便地查看电影信息,而且能获取自己感兴趣的推荐电影的系统。本系统的功能应当是较为完善的,推荐结果应当较为精准化,推荐效率应当高效,并且面对不断增长的电影数据和用户数据应当有着良好拓展性。此外,本系统应当以web页面为最终呈现方式,以便于用户在PC端或移动端等设备上随时访问本系统。
交互层提供了用户与系统之间交互的途径,通过简洁直观的web页面将系统展示给用户。业务逻辑层主要用于实现交互层的功能,根据业务逻辑实现用户信息、电影信息的管理,同时选取合适的推荐算法来完成相关推荐。推荐算法层分为统计推荐、离线推荐和实时推荐。统计推荐主要用统计的方法如计算评论数或评分等来推荐;离线推荐主要反映用户历史的电影喜好,因为计算量巨大需要离线定时运行;实时推荐主要反映用户近期的电影喜好,在离线计算好的数据基础上可以做到秒级、毫米级的计算延迟。存储层综合关系型数据库和非关系型数据库来存储用户数据、电影数据和推荐结果集。交互层、业务逻辑层、推荐算法层和存储层都将会部署在服务器端,用户在web页面上浏览时与服务器端通过HTTP协议来进行数据传输。
总结
本文从实际生活的应用出发,综合运用各类技术,设计并实现了基于Spark的电影推荐系统。在本次课题研究中,所做的工作总结有以下几点:
(1)学习了许多推荐算法的原理;
(2)学习了许多之前的未接触过的技术,如Spark计算框架、ElasticSearch搜索引擎、MongoDB数据库和Vue前端框架等;
(3)详细分析了本系统的功能性需求和非功能性需求;
(4)详细设计了本系统的架构与各个功能模块,详细设计了系统所需的几种推荐算法,如统计推荐、离线推荐和实时推荐算法,详细设计了数据库并给出了优化策略;
(5)测试了推荐算法的误差,以及对系统进行了高并发的性能测试。
展望
虽然本文最终实现了基于Spark的电影推荐系统,但是仍还有进一步完善、优化和提升的空间。笔者提出以下两点优化意见:
(1)搭建Spark高性能集群
目前本系统还是三个节点的集群模式,但是面对日益庞大的数据量,单机的计算能力就有点捉襟见肘了。当搭建了Spark高性能集群,每台机器的计算和内存压力会减轻不少,大大提高了计算效率。
(2)探索其它推荐算法
由于本系统中用户评分矩阵十分稀疏,会对推荐算法的准确性有一定的影响。在以后的学习中,还可以探索其他推荐算法,使本系统具有更高的准确性。