本小组项目实现在线电影推荐系统的前后端开发,使用Django2.2+MySQL+spark。其中MySQL部分支持在线计算,spark支持离线计算。基于MovieSizer,本项目精简美化,实现了新的功能。
感谢每位组员的辛勤付出!
@CaoH @CuiPZ @GongRY @LinS @LiuYL @MeiCH @MengSM @TongQ @WeiSG
本项目基于ubuntu18.04运行。
如下安装好Django2.0+和最新的xadmin
pip3 install --upgrade pip;
pip3 install git+git://github.com/sshwsfc/xadmin.git@django2;
pip3 install django;
pip3 install Pillow;
pip3 show xadmin;
pip3 show django;
还需要安装MySQL8.0+,具体过程可参考MySQL8.0环境搭建
Django框架需要通过migrate命令自动构建数据库,但是会生成相应的缓存文件,这里清空所有的缓存文件并保留应有的结构。
cd MovieRecOnline;
rm -r ./apps/movies/__pycache__
rm -r ./apps/operation/__pycache__
rm -r ./MovieSizer/__pycache__
rm -r ./apps/movies/migrations/*
rm -r ./apps/user/migrations/*;
rm -r ./apps/operation/migrations/*;
touch ./apps/movies/migrations/__init__.py
touch ./apps/user/migrations/__init__.py
touch ./apps/operation/migrations/__init__.py
首先修改MovieRecOnline/MovieSizer/settings.py
文件的mysql数据库连接:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'MovieSizer',
'USER': 'root',
'PASSWORD': '你的密码',
'HOST': 'master',
'PORT': '3306'
}
}
然后在MySQL shell中建立数据库MovieSizer
mysql -u root -p
use mysql;
create database MovieSizer;
执行migrate
自动建表:
cd MovieRecOnline;
chmod +x manage.py;
python3 manage.py makemigrations;
python3 manage.py migrate;
输出如下
Migrations for 'operation':
MovieSizer-final/apps/operation/migrations/0001_initial.py
- Create model Top5Recommend_2
- Create model Top5Recommend
- Create model Review
- Create model Rating
- Create model Default5Recommend
.
.
.
Operations to perform:
Apply all migrations: admin, auth, contenttypes, movies, operation, sessions, user, xadmin
Running migrations:
Applying operation.0001_initial... OK
.
.
.
最后创建管理员用户
python3 manage.py createsuperuser
启动项目
python3 manage.py runserver 0.0.0.0:8000
成功则输出如下
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
May 15, 2019 - 00:47:32
Django version 2.2, using settings 'MovieSizer.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
[15/May/2019 00:47:37] "GET /movieinfo/7641 HTTP/1.1" 200 47740
^C
本项目提供爬取的猫眼电影网站数据作为DEMO,共1000条,字段对应movies_movieinfo
表,点击这里可以看到该SQL文件,复制到MySQL shell中即可插入数据。
接着使用我们编写的cal_similar_gry.py
文件计算电影相似度,存入movies_moviesimilar
表。注意需要使用pip3 install distance
安装依赖,并将MySQL账号密码的参数设置正确。
到这里我们已经计算好了movies_movieinfo
表和movies_moviesimilar
表,主页已经能显示。
本项目计算两张电影相似度表,分别是movies_moviesimilar
和movies_moviesimilar_fromspark
,对应两张推荐表operation_top5recommend
和operation_top5recommend_2
。第二张相似表由spark计算得出,详情可见'calculate_similarity_mch.ipynb'。spark分布式的安装可以参考Spark全分布式安装
有时可以访问:http://www.playbigdata.top:8000/
效果预览: