以下是一篇关于该项目的 blog,并附上部分关键代码:
基于 Spark + MySQL + Spring Boot + Echarts 的豆瓣电影大数据分析可视化项目
在当今大数据时代,数据分析和可视化对于深入理解数据背后的信息至关重要。今天,我要向大家介绍一个令人兴奋的项目——基于 Spark + MySQL + Spring Boot + Echarts 的豆瓣电影大数据分析可视化项目。
一、项目背景
豆瓣电影是一个拥有丰富电影信息的平台,对于电影爱好者、研究者和从业者来说,分析豆瓣电影数据可以获得有价值的洞察。本项目旨在通过爬取豆瓣电影数据,进行深入分析,并以直观的可视化方式呈现这些数据,帮助用户更好地理解豆瓣电影的各种特征和趋势。
二、项目流程
(一)爬虫部分
- 运行
getip.py
文件获取代理 IP 池。在使用前需删除proxy.txt
(存储爬取到的所有代理 IP)和valid.txt
(存储可用代理 IP)。
以下是
getip.py
的部分代码示例:
import requests
from lxml import etree
import random
defget_ip(url):
headers ={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
response = requests.get(url, headers=headers)
html = etree.HTML(response.text)# 根据实际网页结构提取 IP 和端口号
ip = html.xpath('//tr/td[2]/text()')[0]
port = html.xpath('//tr/td[3]/text()')[0]return ip +':'+ port
- 运行
GetData.py
,从网页爬取所需内容,并初步保存到ur.txt
。其中,爬取的 URL 可根据需求进行调整,如https://movie.douban.com/j/chart/top_list?type=11&interval_id=85%3A75&action=&start=
,这里的85%3A75
表示爬取评分在前 75%到 85%区间的内容,可根据实际需求自行修改。 - 运行
clear.py
进行数据处理,并将结果保存到data.csv
。 - 修改
upload.py
中的 Hadoop 集群配置信息,运行该文件将data.csv
上传到 Hadoop 集群。
(二)数据分析部分
七个数据分析文件都需要运行,注意以下操作:
- 在每个文件的开头几行,有以下代码需要根据实际路径进行修改:
System.setProperty("HADOOP_HOME", "C:\\Users\\Administrator\\Desktop\\大数据豆瓣电影数据分析与可视化\\数据分析\\SparkMovies\\apache-hadoop-3.1.3-winutils-master");
System.setProperty("hadoop.home.dir", "C:\\Users\\Administrator\\Desktop\\大数据豆瓣电影数据分析与可视化\\数据分析\\SparkMovies\\apache-hadoop-3.1.3-winutils-master");
System.load("C:\\Users\\Administrator\\Desktop\\大数据豆瓣电影数据分析与可视化\\数据分析\\SparkMovies\\apache-hadoop-3.1.3-winutils-master\\bin\\hadoop.dll");
- 文件中还涉及 Hadoop 集群配置和 MySQL 配置,需根据实际情况进行修改。MySQL 的数据库需手动创建,数据表的 SQL 文件为
part1~7.sql
。
以下是一个数据分析文件的示例代码结构:
from pyspark.sql import SparkSession
from pyspark.sql.functions import*
spark = SparkSession.builder.appName("Analysis").getOrCreate()# 读取数据
df = spark.read.csv("path_to_data.csv", header=True, inferSchema=True)# 数据分析操作
aggregated_df = df.groupBy("column_name").agg(sum("another_column"))# 写入 MySQL
aggregated_df.write.format("jdbc") \
.option("url","jdbc:mysql://localhost:3306/database_name") \
.option("dbtable","table_name") \
.option("user","username") \
.option("password","password") \
.mode("append") \
.save()
(三)数据可视化部分(结合 Spring Boot 和 Echarts)
- 修改
src/main/resources/application.yml
文件中的 MySQL 配置。完整的表生成语句以及数据文件为part1~7 完整.sql
。 - 在 Spring Boot 项目中进行配置和开发,将数据从 MySQL 数据库中读取出来,并通过后端接口提供给前端。以下是一个 Spring Boot 控制器的示例代码:
@RestController@RequestMapping("/api")publicclassDataController{@AutowiredprivateDataService dataService;@GetMapping("/data")publicList<DataModel>getData(){return dataService.getDataFromDatabase();}}
- 在前端页面中使用 Echarts 库,根据后端提供的数据绘制各种可视化图表,如不同年份上映电影数、电影类型分析、电影类型平均评分、演员平均评分、不同年份电影平均评分、不同评分出现次数等。
以下是一个使用 Echarts 的前端代码示例:
<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>Echarts Demo</title><!-- 引入 Echarts 文件 --><scriptsrc="https://cdn.jsdelivr.net/npm/[email protected]/dist/echarts.min.js"></script></head><body><!-- 为图表准备一个 DOM 容器 --><divid="chart"style="width: 600px;height:400px;"></div><script>// 基于准备好的 DOM,初始化 Echarts 实例var myChart = echarts.init(document.getElementById('chart'));// 使用 Ajax 获取后端数据
$.ajax({url:'/api/data',type:'GET',success:function(data){// 指定图表的配置项和数据var option ={title:{text:'Data Visualization'},tooltip:{},xAxis:{data: data.map(item=> item.xValue)},yAxis:{},series:[{name:'Data',type:'bar',data: data.map(item=> item.yValue)}]};// 使用刚指定的配置项和数据显示图表
myChart.setOption(option);}});</script></body></html>
三、技术栈
- MySQL:用于数据存储,方便后续的数据分析和查询。
- Spark:进行高效的大规模数据分析处理,能够快速处理爬取到的豆瓣电影数据。
- Echarts:实现数据的可视化展示,通过直观的图表呈现豆瓣电影数据的特征和趋势。
- Spring Boot:构建后端服务,提供数据接口,实现前后端分离的开发模式。
四、项目成果
- 通过爬虫获取了豆瓣电影的相关数据,并进行了有效的数据处理和存储。
- 利用 Spark 对数据进行分析,挖掘出有价值的信息和趋势。
- 使用 Spring Boot 和 Echarts 搭建了一个数据可视化平台,用户可以通过浏览器直观地查看豆瓣电影数据的各种可视化图表,深入了解豆瓣电影的特点和发展趋势。
五、总结与展望
本项目成功实现了基于 MySQL + Spark + Echarts + Spring Boot 的豆瓣电影数据可视化,为电影爱好者、研究者和从业者提供了有价值的数据分析和可视化工具。未来,可以进一步扩展数据来源和分析维度,提高数据的准确性和完整性,同时优化可视化效果,提供更加丰富和交互性强的用户体验。还可以考虑添加更多的功能模块,如用户登录、数据分享等,使项目更加完善和实用。
如果你对这个项目感兴趣,欢迎前往项目下载地址:https://github.com/gongsunyanming/MoviesAnalysis 进行下载和探索。
版权归原作者 yacrow 所有, 如有侵权,请联系我们删除。