Skip to content

Repository files navigation

基于 Spark 的爱奇艺视频数据分析与可视化系统

毕业设计项目:PySpark 大数据处理 + Flask Web 服务 + ECharts 数据可视化

项目简介

本系统对视频平台的视频信息、用户行为数据进行采集、存储与 Spark 分析,并通过 Web 仪表板进行多维度可视化展示。采用高度仿真的模拟数据进行功能验证,数据分布符合真实场景特征。

功能特性

  • 视频数据分析:分类统计、热门/高分视频、上映趋势、导演/演员排行
  • 用户行为分析:用户画像、活跃度、地域分布、完播率、观看时段、设备类型
  • 推荐算法:相似视频、分类推荐、热门推荐(规则 + 可扩展 MLlib)
  • 数据可视化:仪表板、玫瑰图、柱状图、折线图、热力图、雷达图
  • RESTful API:完整后端接口,内存缓存,MySQL 与 JSON 双数据源
  • UI 优化:深色渐变、毛玻璃卡片、数字滚动动画、图表工具栏

技术栈

层级 技术
前端 Bootstrap 5、ECharts 5、原生 JS
后端 Flask、Flask-CORS
数据处理 PySpark(Spark SQL + DataFrame)
数据库 MySQL 8.0
其他 jieba、pandas、pymysql

系统架构

系统采用分层架构:展示层 → 服务层 → 处理层 → 数据层。详细架构图、数据流程与 Spark 任务流程见 docs/架构图.md。

系统要求

  • Python 3.8+
  • MySQL 8.0+
  • Java 8+(Spark 依赖)

快速开始

# 1. 安装依赖(建议使用虚拟环境)
pip install -r requirements.txt

# 2. 初始化数据库并导入数据
mysql -u root -p < data/init_database.sql
python data/generate_mock_data.py
python data/import_data.py

# 3. 运行 Spark 分析(生成图表数据)
python run_spark_jobs.py

# 4. 启动 Web 服务(默认 5000,若占用可用 FLASK_PORT=5001)
python app.py

访问:**http://localhost:5000**(或你设置的端口)

更详细的安装与配置见 INSTALL.md。

使用说明

页面 路径 说明
仪表板 / 概览卡片、分类分布、热门视频、趋势、地域、时段热力图
用户分析 /user/analysis 用户画像、完播率、设备、周末对比等
视频详情 /video/detail?id=1 视频信息、统计、推荐列表、行为样本
  • 仪表板数据每 30 秒自动刷新,顶部会显示“数据已更新”时间。
  • 点击「热门视频 Top 10」柱状图可跳转对应视频详情。

完整操作说明见 docs/user_manual.md。

API 文档

详见 API.md。主要接口包括:/api/overview、/api/video/category_stats、/api/video/top_videos、/api/video/trend、/api/user/region_distribution、/api/user/behavior_stats、/api/video/detail、/api/recommendation 等。

项目目录结构

├── app/                    # Flask 应用模块
├── spark_jobs/             # Spark 数据处理
│   ├── spark_analyzer.py       # 基础分析
│   ├── user_behavior_analyzer.py
│   └── recommendation.py
├── data/                   # 数据与 SQL
│   ├── init_database.sql
│   ├── generate_mock_data.py
│   ├── import_data.py
│   └── analysis_results/       # Spark 输出 JSON
├── static/js/               # 前端脚本
├── templates/               # HTML 模板
├── config/                 # 配置
├── utils/                   # 工具(db_helper、logger)
├── tests/                   # 测试
├── docs/                    # 文档(架构图、手册等)
├── app.py                   # Flask 主应用
├── config.py                # 全局配置
├── run_spark_jobs.py        # Spark 任务一键执行
├── run_all.py               # 一键启动(可选跳过数据/Spark)
└── requirements.txt

常见问题(FAQ)

Q: Spark 运行很慢?
A: 可减少模拟数据量,或调整 config.py 中 SPARK_CONFIG 的并行度与内存。

Q: MySQL 连接失败?
A: 确认 MySQL 已启动,并检查 config.py 中 MYSQL_CONFIG(host、port、user、password、database)。

Q: 前端图表为空或报错?
A: 先执行 python run_spark_jobs.py 生成 data/analysis_results/ 下的 JSON;并确认 /api/overview、/api/video/category_stats 等接口返回正常。

Q: 端口 5000 被占用?
A: 使用 env FLASK_PORT=5001 python app.py 或修改 config.py 中 FLASK_CONFIG['PORT']。

开发者说明

  • 测试:pytest tests/
  • 日志:logs/ 目录
  • 配置:支持环境变量覆盖(如 MYSQL_PASSWORD、FLASK_PORT)

许可证

MIT License

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages