admin 管理员组

文章数量: 1086019


2024年3月12日发(作者:万网建站教程)

ISSN1009-3044

Computer

Knowledge

Knowledge

and

and

Technology

Technology

电脑知识

电脑知识

与技术

Computer

与技术

Vol.17,No.5

February

2021

E-mail:*************.cn

第17卷第5期(2021年2月)

http://

Tel:+86-551-6569

基于Spark和微服务架构的电影推荐系统设计与实现

史爱武,李险贵

(武汉纺织大学云计算与大数据研究中心,湖北武汉430200)

摘要:推荐系统广泛应用于人们生活的多个领域,日常生活中常见的有电商、电影、音乐和新闻推荐等。推荐系统根据用

户的历史偏好主动推送相关的信息,节约了用户的时间,极大地提升了用户的体验。随着大数据技术的发展成熟,数据处

理的速度变得更快。该文选取MovieLens电影数据集,并基于大数据分布式处理框架Spark和交替最小二乘法ALS等算法

搭建数据处理平台,然后再结合SpringBoot和SpringCloud等搭建电影后台服务,实现一个基于微服务架构的电影推荐

系统。

关键词:推荐系统;Spark;ALS;微服务架构

中图分类号:TP311.52文献标识码:A

开放科学(资源服务)标识码(OSID):

文章编号:1009-3044(2021)05-0078-03

DesignandImplementationofMovieRecommendationSystemBasedonSparkandMicroserviceArchitecture

SHIAi-wu,LIXian-gui

(CloudComputingandBigDataResearchCenterofWuhanTextileUniversity,Wuhan430200,China)

Abstract:Recommendationsystemiswidelyusedinmanyfieldsofpeople'slife,suchase-commerce,movies,musicandnewsrec⁃

endationsystemactivelypushesrelevantinformationaccordingtotheuser'shistoricalpreference,

whichsavestheuser'stimeandgreatlyimprovestheuser'edevelopmentandmaturityofbigdatatechnology,

perselectsmovielensmoviedataset,buildsadataprocessingplatformbased

onbigdatadistributedprocessingframeworkSparkandalternatingleastsquaresalgorithmALS,andthenbuildsmoviebackground

servicecombinedwithSpringBootandSpringCloudtorealizeamovierecommendationsystembasedonmicroservicearchitecture.

Keywords:recommendationsystem;Spark;ALS;microservicearchitecture

1背景

大数据时代用户面临信息过载的问题,为了从海量数据中

找到用户可能感兴趣的信息,由此产生了推荐系统。日常生活

中常见的有电商、电影、音乐和新闻推荐等

[1]

。随着大数据技术

如Spark、Flink等的发展成熟,其计算速度更快,可以更好地为

广大群众服务。本文将基于Spark和微服务架构设计并实现一

个简易的电影推荐系统。

似的物品。基于协同过滤的推荐,即根据用户评分矩阵,用户

和物品协同作战。协同过滤推荐可分为基于内存的协同过滤

Memory-basedCF和基于模型的协同过滤Model-basedCF。

Memory-based可分为基于用户的协同过滤User-basedCF和基

于物品的协同过滤Item-basedCF

[3]

。混合推荐,即多种算法按

照不同的策略进行混合后再推荐,常见的混合推荐有加权、切

换、分区、分层、瀑布式混合、特征组合和特征增强等

[4]

2.2Spark介绍

2相关技术

2.1推荐策略

推荐系统的实质是对用户或者物品的本身属性即基本信

息,或者是对用户的行为数据进行分析,通过特定的算法模型

从海量数据中找到相关性,从而产生推荐的结果。常见的推荐

策略有基于内容的推荐、协同过滤推荐和混合推荐等

[2]

基于内容的推荐,即根据物品自身的属性特征计算物品间

的相关性或相似性,再基于用户的历史偏好记录为用户推荐相

Spark作为大数据并行计算框架,由于支持内存计算,减少

了IO开销,带来了更高的迭代计算效率,同时Spark也支持批

处理和实时流数据处理等。Spark包含的组件主要有Spark

Core、SparkSQL、SparkStreaming、StructuredStreaming、MLlib和

[5]

GraphX等

2.3微服务架构

微服务架构将单一应用细分为多个微服务,可以独立开发

收稿日期:2020-10-28

作者简介:史爱武(1972—),男,湖北人,副教授,研究方向为云计算与大数据;李险贵(1994—),男,湖北人,硕士,研究方向为云计

算与大数据。

78

软件设计开发

本栏目责任编辑:谢媛媛

第17卷第5期(2021年2月)

和部署每个微服务,便于开发和维护。多个微服务之间互相协

调、互相配合。常见的微服务架构有SpringCloud和Dubbo等

等。微服务架构体系包含服务注册与发现、服务调用、服务降

级、服务网关、服务配置和服务总线等

[6]

,对应的组件如表1

所示。

表1微服务架构相关组件

微服务架构组件

服务注册与发现

Eureka、Zookeeper、Consul、Nacos等

服务调用

Ribbon、LoadBalancer、Feign、OpenFeign等

服务降级

Hystrix、Resilience4j、Sentinel等

服务网关

Zuul、Gateway等

服务配置

Config、Nacos等

服务总线

Bus、Nacos等

3系统设计

3.1架构设计

本系统采用微服务架构,并基于前后端分离设计理念。系

统架构设计如下图1,首先选取MovieLens电影数据集ml-1m,

并基于Spark进行数据处理,将结果存入到MongoDB中;然后基

于SpringBoot搭建电影后台微服务,同时将服务注册到Nacos

中;前端基于Vue等进行开发,通过服务网关Gateway访问不同

的服务,并由Feign调用具体的微服务

[7]

图1系统架构设计

3.2功能模块

本系统主要分为数据处理部分和电影后台微服务部分。

如图2其中数据处理主要包括离线统计模块和离线推荐模块,

离线统计模块包含最新电影推荐和热门电影推荐功能;离线推

荐模块包含基于交替最小二乘法ALS的协同过滤推荐、基于物

品的协同过滤推荐和基于内容的推荐;电影后台服务包含电影

模块和用户模块等。

图2系统功能模块

本栏目责任编辑:谢媛媛

ComputerKnowledgeandTechnology

电脑知识

与技术

4系统实现

4.1开发工具和开发环境

IntelliJ

实现一个简易的基于微服务架构的电影推荐系统,

下表2。

IDEA和VisualStudioCode为开发工具,开发环

选取

境如

表2开发环境

JDK1.8

Scala2.11

Spark2.1.1

1

SpringCloudAlibaba2.1.0

SpringBoot2.2.2

Vue2.5

MongoDB3.2

Mysql5.6

4.2热门电影推荐实现

热门电影推荐考虑最近每周内每部电影的评分次数,评分

次数越多说明该电影的热度越高。具体流程如下。

1

2

加载数据集。

统计最近每周电影的评分次数并进行降序排序。

4.3基于

3)将结果存入到

ALS的协同过滤推荐实现

MongoDB中。

交替最小二乘法ALS其实是将一个稀疏的用户评分矩阵

通过降维得到用户隐特征矩阵和电影隐特征矩阵的过程

[8]

,推

荐流程如下。

1

和正则化系数

2

加载数据集并随机切分为训练集和测试集。

多次调整

lambda

ALS的参数如迭代次数

等对模型进行训练。

iteration、隐特征个数k

的均方根误差

3)计算每种参数组合下测试集预测评分与实际评分之间

RMSE。

组合。

4)选取RMSE最小时的参数组合作为ALS的最优参数

5)通过训练

进行降序排序。

6)计算两两电影隐特征向量的余弦相似度并按照相似度

ALS模型得到电影隐特征矩阵。

4.4基于物品的协同过滤推荐实现

7)将结果存入到MongoDB中。

基于物品的协同过滤是根据用户的行为数据如评分、点

击、收藏等计算出两物品间的相似度,即两物品间有相同的受

众,表示两物品间有相关性。以用户评分记录为例,具体流程

如下。

1

2

)加载数据集。

3

)统计每部电影的评分个数,并根据电影ID进行组合。

4

统计两两电影被同一用户评过分的次数。

计算两两电影间的同现相似度并按相似度降序排序。

4.5电影后台服务实现

5)将结果存入到MongoDB中。

电影后台服务基于SpringBoot和SpringCloud等实现,主

软件设计开发

79

ComputerKnowledgeandTechnology

电脑知识

与技术

第17卷第5期(2021年2月)

要功能是读取MongoDB中的数据,并对外提供用户模块和电影

模块的访问接口。为了让每种算法推荐的效果更加明显,基于

Vue搭建前端项目,最终前端页面的推荐效果如图3,其中上半

部分展示电影的详细信息,中间部分展示各种推荐算法推荐的

电影ID列表和是否有交集及交集个数,下半部分展示不同算

法推荐的电影列表及相似度。

推荐算法的具体流程,本系统暂时包含最新电影推荐、热门电

影推荐、基于ALS的协同过滤推荐、基于物品的协同过滤推荐、

基于内容的推荐、用户注册登录和电影展示等功能。未来的研

究工作将结合kmeans和深度学习等模型进行推荐,提高推荐

的多样性和准确率,同时也可考虑进行实时推荐。

参考文献:

[1]项亮.推荐系统实践[M].北京:人民邮电出版社,2012.

[2]ZhangS,YaoLN,SunAX,arningbasedrecom⁃

mendersystem:asurveyandnewperspectives[EB/OL].[2020-

03-02]./abs/1707.07435.

[3]ZhangYF,nablerecommendation:asurveyand

newperspectives[J].FoundationsandTrends®inInformation

Retrieval,2020,14(1):1-101.

[4]张志威.个性化推荐算法研究综述[J].信息与电脑(理论版),

2018(17):27-29.

[5]林子雨.大数据技术原理与应用:概念、存储、处理、分析与应

用[M].2版.北京:人民邮电出版社,2017.

[6]冯志勇,徐砚伟,薛霄,等.微服务技术发展的现状与展望[J].

计算机研究与发展,2020,57(5):1103-1122.

[7]熊其昌.基于微服务架构的学习系统设计与实现[D].武汉:华

中师范大学,2020.

[8]侯敬儒,吴晟,李英娜.基于Spark的并行ALS协同过滤算法研

究[J].计算机与数字工程,2017,45(11):2197-2201.

【通联编辑:谢媛媛】

图3推荐效果图

5结束语

通过设计并实现一个简易的电影推荐系统,对Spark进行

数据处理和微服务架构等有更深入的了解,同时也了解了不同

(上接第77页)

求方面,还是在满足校园业务与信息动态发展方面,均得到了

明显加强。可以说,混合模式的跨平台移动校园系统的推广应

用无疑是为高校管理工作的顺利实施提供了良好的内在保障。

但是需要注意的是,混合模式的跨平台移动校园系统尚未达到

成熟推广应用阶段,在部分应用层面上仍旧存在亟待解决的问

题。针对此,建议在未来的开发设计过程中,研究人员可以从

细化用户角色类型、功能模块与时俱进以及数据挖掘等方面加

强对混合模式跨平台移动校园系统的研究,以期可以更好地满

足师生用户需求。

参考文献:

[1]王慧.移动校园系统数据传输关键技术研究与实现[D].青

岛:中国海洋大学,2014.

[2]李国才.基于Android平台的智慧校园移动App设计与实现

[J].电脑编程技巧与维护,2019(12):76-77,82.

[3]崔瑶.互联网技术在智慧校园建设中的应用研究[J].信息记

录材料,2019,20(11):185-186.

[4]赵英,程良.基于OSGi和RESTful技术的移动校园数据中间

件的设计[J].华中科技大学学报(自然科学版),2013,41(S2):

127-130.

[5]邓春红,任海鹏,潘涛.基于移动终端的智慧校园系统设计

[J].绥化学院学报,2017,37(5):158-160.

[6]王振.基于Android平台的移动智慧校园系统的构建分析[J].

山西能源学院学报,2017,30(2):133-135.

[7]张敏.移动智慧校园客户端的开发与应用[J].湖南工业职业

技术学院学报,2016,16(1):11-13+39.

[8]李引,陈敏锋.基于移动端的智慧校园服务平台研究与实现

[J].科技传播,2018,10(24):92-93.

【通联编辑:唐一东】

80

软件设计开发

本栏目责任编辑:谢媛媛


本文标签: 推荐 电影 服务 用户 系统