基于Hadoop的豆瓣影视数据分析

课题简介

       网络电影平台拥有大量的影片库资源,每天数千万用户活跃在平台上,拥有数亿人次的用户点击试看、收藏等行为。在影视作品方面,更是拥有数万的影视作品形成作品库,如此庞大的数据资源库对于电影及电视剧流行趋势的把握有着极为重要的指引作用。通过设计和实现基于Hadoop的影视数据分析系统,可以为影视产业提供重要的数据支持和决策方向,帮助影视从业者更好地了解观众需求、优化内容创作、改进营销策略,提高影视作品的商业成功率和用户满意度。同时,该系统也为研究人员和学者提供了一个丰富的数据资源,用于对影视产业进行深入研究和分析。

 

过程要求

1、搭建Hadoop分布式系统环境。

2、爬取某网站电影名、评论数、评分、评论、国家、类型、年份等数据,存储到HDFS。

3、数据清洗,去掉缺失值、空值等,做必要的数据转换.

4、MapReduce数据分析,分析维度:所属国家、类型、评论量、评分、等多个维度统计分析。

5、通过数据可视化技术,将复杂的影视数据以直观的图像呈现,并展示流行趋势预测结果。

 

使用技术

Hadoop、MySQL、Python、Pandas、Java、SpringBoot、Html、JS、CSS、Echarts

 

使用软件

VMware Workstation、MobaXterm、Idea、DBeaver

 

 

1 搭建Hadoop分布式系统环境

       这里我们使用Hadoop完全分布式,搭建过程不再描述,可以在网上搜索教程。

 

1.启动三台虚拟机

51f37f56b08d412ea7517b2059d4ea21.png

 

2.开启hadoop集群

用MobaXterm图形界面用户操作工具连接虚拟机,启动hadoop集群:

在配置了 NameNode 的节点(node1)启动 HDFS:
[root@node1 ~]# start-dfs.sh
在配置了 ResourceManager 的节点(node2)启动 YARN
[root@node2 ~]$ start-yarn.sh
 

(下图启动方式是设置了一键启动脚本)3d73723814e047628a219e7faba870d2.png

 

3.确认网页能打开

119ad0fff2814341be901028fb8dbe22.png

 

 

2 爬虫爬取数据集

1.编写Java程序

这里我们使用Java代码爬取豆瓣评分前250名电影数据

目标网站:豆瓣电影 Top 250 (douban.com)

爬取字段:电影名字、国家、年份、简介、类型、评分、评论数量

aa55560d937f40bc896de99878eace68.png

 

2.运行Java程序

爬虫已开始,等待程序爬完即可

6c96f6236dc847babf2b988db354b99e.png

 

3.数据展示

爬完后保存为csv文件到本地

704e1ae6bdbf442da39ed0893fe224c9.png

 

4.上传数据

再将该csv文件上传到HDFS,将本地文件上传到HDFS可以直接用鼠标拖拽到虚拟机里,然后再通过shell命令上传至HDFS,也可以通过Java代码直接连接HDFS将本地文件上传到HDFS

bb1e3b59ba1f4e8993f74c870a32724e.png

点击运行创建文件和上传文件Test

9398e75effce4d87b918e31d77ce7b83.png

 

5.结果展示

0d30d5c36ce94639acf95070b5474653.png

 

3 数据清洗

1.安装python3

具体步骤:

sudo yum install python3 

wget https://bootstrap.pypa.io/pip/3.6/get-pip.py

sudo python3.6 get-pip.py

pip3 install pandas

其中第三步sudo python3.6 get-pip.py可能会报以下错误 :

 ERROR: This script does not work on Python 3.6 The minimum supported Python version is 3.7.           Please use https://bootstrap.pypa.io/pip/3.6/get-pip.py instead.

解决方法:

打开安装失败报错所给的网址:bootstrap.pypa.io/pip/3.6/get-pip.py

将网址所有内容ctrl+A、ctrl+C复制,在虚拟机创建get-pip.py文件并将内容ctrl+V进去后保存文件,再次执行sudo python3.6 get-pip.py即可成功安装

89abdd9a24294d6797a4db69a6b0627f.png

下载HDFS文件到虚拟机本地,也可直接从Windows本地拖拽到虚拟机,还可以使用shell命令从HDFS下载到虚拟机本地,代码如下:

hadoop fs -get /bysj/input/data.csv /opt/data/data.csv

以下是通过Java代码下载HDFS文件到虚拟机 

4e15d23551f34ae0813ede522636b11b.png

 

2.编写Python程序

vi sjqx.py 进去编辑一段简单的数据清洗python代码,并保存

import pandas as pd

# 读取 CSV 文件
df = pd.read_csv('/opt/data/data.csv')

# 处理缺失值
df = df.dropna() # 删除包含缺失值的行

# 删除重复行
df = df.drop_duplicates()

# 保存为新的文件
cleaned_csv_path = '/opt/data/new_data.csv'
df.to_csv(cleaned_csv_path, index=False)

 

3.运行Python程序

在虚拟机输入 python3 sjqx.py 即可运行代码,刷新文件夹后得到新的数据集

669f5c6f6fa94c5cb5f9d07440fd31ba.png

 

4.结果展示

e40674118f0e407393343f362fd0f737.png

 

 

4 数据分析

1.分析维度

这里我将对数据集进行七个方面维度的分析,分别是:

①每个类型电影总数

②电影简介中关键词出现次数总和

③每个国家上榜电影总数

④各个年份上映电影总数

⑤电影类型热度排行榜

⑥每部电影评论总数

⑦电影评分排行榜

 

2.编写Map Reduce代码

Ⅰ “ 每个类型电影总数 ” Mapper代码(mapper部分):

494934ecef5046ebb5f7da40decfd1a0.png

Ⅱ  “ 每个类型电影总数 ” Reduce代码(reduce部分):

1d873def800644fba22464d7197bcbab.png

Ⅲ  “ 每个类型电影总数 ” Runner代码(提交部分):

87c8db9ac4794ce7a8b4174a3ee6cac4.png

Ⅳ  “ 每个类型电影总数 ” Table代码(上传数据库部分):

63c4d709100748a5a97e7712ce166bf6.png

Ⅴ 数据库连接 

41fbf9c0f541429c81236a478d1fdaf2.png

Ⅵ hadoop连接

5b6d875cea204e37b4c03d057bac02dc.png

Ⅶ 最后将所有维度的mapreduce分析由“ AllMain ”启动项一起启动

830de932456c4f36802624cdb8661340.png

 

3.运行Map Reduce代码

在AllMain中右击运行

733dc4acc1b7425680543134dcc00e56.png

 

4.结果展示

535a259d728040f19aee3a70ed59a6e0.png

 

 

5 数据可视化

数据可视化这里我们使用Spring Boot + Html + Js + Css + MySQL + Echarts实现

 

1.编写后端代码

①Controll层

c5c56d98df9a48f99cb3ddb3c1c2260c.png

②Service层

cd02fc72bc234de9acd237e377893994.png

③Dao层

d966cf9f32954fe0b84517f9dae9b34a.png

 

2.编写前端代码

①Html主页面代码

7d15a688a2da41d1948a02057d44f522.png

②Css渲染代码

af6fed13e3624837b946543ba2e2e32f.png

③Js、Echarts图形代码 

f2824fcfb0164297999ed5e141bcc405.png

 

3.运行spring boot项目

右击Application运行即可

b338df76155449768e113676fedaf113.png

 

4.结果展示

打开浏览器,输入 “ http://localhost:8088/ ” 

 6797d5130e334445843796bd54d33232.png

 

 

  • 31
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值