没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
1
基于
HBase
的芒果
TV
综艺弹幕数据分析
由于内存原因,本课题针对当前芒果 TV 综艺热搜榜 top5 中每个综艺的最新
一期前五分钟的弹幕进行数据分析。
1 项目设计目的
本项目涵盖 Linux、HDFS、MySQL、Sqoop、HBase、Hive、IntelliJ IDEA、
ECharts 等语言和工具的使用方法。通过本项目,可以学习到大数据生态系统的
综合运用。
通过实现此项目,可以达到如下目的:
①熟悉在 Linux 环境下将数据从本地上传到 HDFS 的过程
②了解 MySQL 建表等操作
③了解 Sqoop 的数据操作
④了解 HBase 创建表的过程
⑤了解 Hive 数据仓库的基本操作
⑥了解 ECharts 开发语言
⑦使用 EChars 编写可视化程序
2 技术简介
2.1 项目技术架构和组成
项目实现的功能是将收集到的数据上传到 HDFS 中,把明细数据保存到 HBase,
把数据存储到 Hive 中,之后再进一步使用 Hive 对数据进行分析,最后使用
Python 对数据进行可视化展示。此项目的技术组成包括:Linux 系统 CentOS、
MySQL、HDFS、Kettle、Hive、HBase、Sqoop、IDEA、Python、ECharts 等。
2
图 2.1-1 技术组成
2.2 主要技术解析
2.2.1 HBase
HBase 是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用
HBase 技术可在廉价 PC Server 上搭建起大规模结构化存储集群。HBase 不同于
一般的关系数据库,它是一个适合于非结构化数据存储的数据库。
2.2.2 Hive
hive 是基于 Hadoop 的一个数据仓库工具,用来进行数据提取、转化、加载,
这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。hive 数
据仓库工具能将结构化的数据文件映射为一张数据库表,并提供 SQL 查询功能,
能将 SQL 语句转变成 MapReduce 任务来执行。Hive 的优点是学习成本低,可以
通过类似 SQL 语句实现快速 MapReduce 统计,使 MapReduce 变得更加简单,而不
必开发专门的 MapReduce 应用程序。hive 十分适合对数据仓库进行统计分析。
2.2.3 MySQL
MySQL 是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,
而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
3 数据获取与预处理
3.1 网页分析
3
打开节目网页,通过开发者工具网络中的 XHR 我们可以发现,随着节目的播
放,每隔一分钟 XHR 中会新增一个 json 文件。查看 json 文件,可以发现每个
json 文件都存储着前一分钟内所有的弹幕数据,主要包括用户名、弹幕内容、
点赞数等,因此,节目时长(min)=json 文件数。
在 Headers 中可以获取每个 json 文件的 url,发现同一期节目 json 文件的
url 日期后两个数字是一样的,可以通过这两个数字定位到节目的某一集。
爬虫代码:
import requests
import json
import pandas as pd
#提取某一期的弹幕
def get_danmu(num1,num2,page):
try:
4
url='https://bullet-ws.hitv.com/bullet/2022/11/27/{}/{}/{}.json'
danmuurl = url.format(num1,num2,page)
res=requests.get(danmuurl)
res.encoding = 'utf-8'
jd=json.loads(res.text)
except:
print("无法连接")
details=[]
for i in range(len(jd['data']['items'])): #弹幕数据在 json 文件
'data'的'items'中
result={}
result['stype']=num2 #通过 stype 可识别期数
result['id']=jd['data']['items'][i]['id'] #获取 id
result['content']=jd['data']['items'][i]['content'] #获取弹幕
内容
result['time']=jd['data']['items'][i]['time'] #获取弹幕发布时
间
try: #尝试获取弹幕点赞数
result['v2_up_count']=jd['data']['items'][i]['v2_up_count']
except:
result['v2_up_count']=''
details.append(result)
return details
#输入关键信息
def count_danmu():
5
danmu_total=[]
num1=input('第一个数字')#URL 日期后的第一串数字
num2=input('第二个数字')#URL 日期后的第二串数字
page=int(input())#总时长,因为每一分钟就会生成一个 json 文件
for i in range(page):
danmu_total.extend(get_danmu(num1,num2,i))
return danmu_total
def main():
df=pd.DataFrame(count_danmu())
df.to_csv('D:\\fenbushi\\田子悦-基于 HBase 的芒果 TV 综艺弹幕数据分
析\\data\\five.csv')#存放位置
if __name__ == '__main__':
main()
在本次实验中,主要爬取节目代号 stype、用户 id、弹幕内容 content、发布时
间 time、弹幕点赞数 v2_up_count。
3.2 《大湾仔的夜第二季》弹幕数据爬取
3.3 《再见爱人第二季》弹幕数据爬取
剩余25页未读,继续阅读
资源评论
悦小白
- 粉丝: 14
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功