Skip to content

使用Django2.2+MySQL+spark实现在线电影推荐系统。其中MySQL部分支持在线计算,spark支持离线计算。

Notifications You must be signed in to change notification settings

JimXiongGM/MovieRecOnline

Repository files navigation

MovieRecOnline

本小组项目实现在线电影推荐系统的前后端开发,使用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

配置MySQL数据库

首先修改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_moviesimilarmovies_moviesimilar_fromspark,对应两张推荐表operation_top5recommendoperation_top5recommend_2。第二张相似表由spark计算得出,详情可见'calculate_similarity_mch.ipynb'。spark分布式的安装可以参考Spark全分布式安装

预览

有时可以访问:http://www.playbigdata.top:8000/

效果预览:

web预览

About

使用Django2.2+MySQL+spark实现在线电影推荐系统。其中MySQL部分支持在线计算,spark支持离线计算。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages