# Readme
## 项目介绍
### 啰嗦
本项目基于Bilibili的分开信息,实现需求的主要模块为[Flink](https://flink.apache.org/) + [eCharts](https://www.echartsjs.com/zh/option.html),点击直达官网。
项目代码主要是Scala + Python实现,建议学习大数据的最好掌握Java或Scala,学习资料丰富些。
[GitHub地址](https://github.com/KelvinChi/BilibiliPublicDataAnalysis)
### 项目架构
#### 项目环境版本信息
| Scala | Python | Flink | Flume | Kafka | CentOS | Redis |
| :-: | :-: | :-: | :-: | :-: | :-: | :-: |
| 2.11.8 | 3.7.3 | 1.7.2 | 1.7.0 | 0.11.0.2 | 6.8 | 2.8.17 |
#### 一图胜千言
![项目流程](https://upload-images.jianshu.io/upload_images/2083763-453b33fcacaa685f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
### 静态图表
来看看效果,先上个静态的,这个简单需求完全可以不用框架实现,但已奉上粗漏的Flink代码,让大佬们适应一小下。
![弹幕时间分布](https://upload-images.jianshu.io/upload_images/2083763-1a6995aa46791004.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
### 动态图表
- 需求一:弹幕在视频时间线上分布情况
![弹幕散点](https://upload-images.jianshu.io/upload_images/2083763-b07565373b95000f.gif?imageMogr2/auto-orient/strip)
- 需求二:视频净观看量、设定时间段内增量及增长率动态统计
![观看量增长](https://upload-images.jianshu.io/upload_images/2083763-8d3d09d097da6dba.gif?imageMogr2/auto-orient/strip)
*为了调度代码我把时间设置得非常小,实际使用应该以小时计*
## 跑项目的一些小建议
### 启动顺序
1. Flume、Kafka启动顺序
- 首先需要启动集群ZooKeeper,然后是Kafka服务、Flume
2. 启动Redis
- 爬虫使用了Redis存储视频一些静态信息
2. 启动爬虫
- 爬虫文件为PythonWorm/bilibiliWorm.py
3. 启动Flink
- FlinkAnalysis/src/main/scala/com.ck.bulletScreen & pageView
- PV还有静态代码在
4. 启动Flask
- pyecharts下,每个需求一个文件
- py会有一个对应的html文件,在html中写的eCharts代码,参考官方文档,要啥有啥
### 小提示
在config&ShellFiles里放了flume配置文件与一些脚本文件,方便有需要的借鉴~
#### 文件说明
- xsync.sh
- 同步文件脚本
- .bash_foo
- 函数脚本,将各种启动、维护代码写成函数,放入以统一管理
- .bash_aliases
- alias统一管理脚本
- .bash_profile
- 在这个文件中需要加入引用.bash_aliases的代码
**注意以上 . 开头的文件都放在 ~ 中**
## 项目优化
### 待优化
1. 暂时爬到的弹幕还是放在内存中去重,但大数据嘛,肯定不能这么干啊,之后会补充上布隆加Redis方案,使用布隆可能有少量数据会错误识别,但弹幕嘛,要求也没那么高
2. 暂时各个图表需求都是分散的,且没有改Flask端口,一次只能启动一个;之后会将所有图集成到一个网页中,也考虑多端口使用
### 已优化
1. ~~爬虫卡死:request添加timeout参数~~
2. ~~图表初始数据载入:通过设置flag及prepare_init_data函数处理初始数据,通过jsonify传递给js载入;散点图载入全量数据,PV图载入最后十条数据,如果数据不够则只显示对应条目数据~~
3. ~~散点图鼠标无触发信息,之后加上这个功能~~
## 一些参考链接
- [Java判断当前日期是否是节假日](https://blog.csdn.net/my_ha_ha/article/details/96144394)
- 基于网页服务提供的,因为没法大量申请,所以放弃使用了。
- [Python操作Redis数据库](https://www.cnblogs.com/cnkai/p/7642787.html)
- [利用 Flask 动态展示 Pyecharts 图表数据的几种方法](https://www.jianshu.com/p/6910712e9b64)
- [解决github图片不显示的问题](https://blog.csdn.net/qq_38232598/article/details/91346392)
- 我遇到的小问题,供遇同问题的大佬参考
没有合适的资源?快使用搜索试试~ 我知道了~
基于Bilibili公开的数据,通过Flink实时分析计算,做成需要的动态图表源码+部署文档+全部资料齐全 高分项目.zip
共222个文件
class:82个
xml:80个
csv:13个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 50 浏览量
2024-05-13
19:18:18
上传
评论
收藏 736KB ZIP 举报
温馨提示
【资源说明】 基于Bilibili公开的数据,通过Flink实时分析计算,做成需要的动态图表源码+部署文档+全部资料齐全 高分项目.zip基于Bilibili公开的数据,通过Flink实时分析计算,做成需要的动态图表源码+部署文档+全部资料齐全 高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
基于Bilibili公开的数据,通过Flink实时分析计算,做成需要的动态图表源码+部署文档+全部资料齐全 高分项目.zip (222个子文件)
PageView$CombineProcess.class 8KB
PageViewBatchProcess$CombineProcess.class 8KB
JsonLog.class 7KB
BSPerDayDistribution$.class 7KB
PVResult.class 6KB
BSCon.class 6KB
PageView$.class 6KB
BSPerVedioDistribution$.class 6KB
PageViewBatchProcess$.class 5KB
incrsRatio.class 5KB
viewTimes.class 5KB
BSPerVedioDistribution$BSData.class 4KB
PageViewBatchProcess$$anon$6.class 4KB
PageView$$anon$6.class 4KB
PageViewBatchProcess$$anon$3.class 4KB
BSPerVedioDistribution$$anon$2.class 4KB
PageView$$anon$3.class 4KB
CountAgg.class 4KB
PageViewBatchProcess$CombineProcess$$anonfun$onTimer$1.class 3KB
WindowResult.class 3KB
PageView$CombineProcess$$anonfun$onTimer$3.class 3KB
BSPerDayDistribution$BSMap.class 3KB
PageView$CombineProcess$$anonfun$onTimer$4.class 3KB
BSPerDayDistribution.class 3KB
BSPerVedioDistribution$$anon$2$$anon$1.class 3KB
JsonLog$.class 3KB
PageViewBatchProcess$$anon$6$$anon$2.class 3KB
PageViewBatchProcess$$anon$3$$anon$1.class 3KB
PageView$$anon$6$$anon$2.class 3KB
PVResult$.class 3KB
PageView$$anon$3$$anon$1.class 3KB
BSPerVedioDistribution$$anonfun$1.class 3KB
PageView$CombineProcess$$anonfun$onTimer$1.class 2KB
PageView$CombineProcess$$anonfun$onTimer$2.class 2KB
PageViewBatchProcess$CombineProcess$$anonfun$onTimer$4.class 2KB
BSCon$.class 2KB
PageViewBatchProcess$CombineProcess$$anonfun$onTimer$2.class 2KB
PageViewBatchProcess$CombineProcess$$anonfun$onTimer$3.class 2KB
incrsRatio$.class 2KB
BSPerDayDistribution$$anonfun$orderAndWrite$2.class 2KB
viewTimes$.class 2KB
PageViewBatchProcess$$anon$6$$anon$10$$anon$7.class 2KB
BSPerVedioDistribution.class 2KB
BSPerVedioDistribution$$anon$2$$anonfun$createSerializer$1.class 2KB
PageView$$anon$6$$anon$10$$anon$7.class 2KB
PageViewBatchProcess$$anon$6$$anonfun$createSerializer$2.class 2KB
PageViewBatchProcess$$anon$3$$anonfun$createSerializer$1.class 2KB
PageViewBatchProcess$$anon$9$$anon$5.class 2KB
PageViewBatchProcess$$anon$8$$anon$4.class 2KB
PageView$$anon$3$$anonfun$createSerializer$1.class 2KB
PageView$$anon$6$$anonfun$createSerializer$2.class 2KB
PageView$$anon$8$$anon$4.class 2KB
PageView$$anon$9$$anon$5.class 2KB
PageViewBatchProcess$CombineProcess$$anonfun$7.class 2KB
PageViewBatchProcess$CombineProcess$$anonfun$5.class 2KB
PageViewBatchProcess$CombineProcess$$anonfun$6.class 2KB
PageViewBatchProcess$$anon$6$$anon$10.class 2KB
PageViewBatchProcess$$anon$9.class 2KB
PageViewBatchProcess$$anon$8.class 2KB
PageViewBatchProcess.class 2KB
PageView$CombineProcess$$anonfun$8.class 2KB
PageView$$anon$6$$anon$10.class 2KB
PageView$CombineProcess$$anonfun$7.class 2KB
PageView$CombineProcess$$anonfun$6.class 2KB
PageView$$anon$9.class 2KB
PageView$$anon$8.class 2KB
BSPerVedioDistribution$$anonfun$1$$anonfun$apply$1.class 2KB
PageViewBatchProcess$$anonfun$1.class 2KB
PageView$$anonfun$1.class 2KB
BSPerDayDistribution$$anonfun$1.class 2KB
PageView.class 1KB
PageView$$anonfun$2.class 1KB
BSPerDayDistribution$$anonfun$orderAndWrite$3.class 1KB
BSPerDayDistribution$$anonfun$orderAndWrite$1.class 1KB
BSPerVedioDistribution$$anonfun$2.class 1KB
PageViewBatchProcess$$anonfun$4.class 1KB
PageViewBatchProcess$$anonfun$3.class 1KB
PageViewBatchProcess$$anonfun$2.class 1KB
PageView$$anonfun$5.class 1KB
PageView$$anonfun$3.class 1KB
PageView$$anonfun$4.class 1KB
IsWeekend.class 1KB
file-flume-kafka-BSPVD.conf 754B
file-flume-kafka-PV.conf 747B
xmlLog.csv 1.38MB
jsonLog.csv 111KB
viewIncrsRatio.csv 21KB
viewTimes.csv 15KB
viewIncreasement.csv 14KB
BSPerVedio.csv 5KB
viewTimes.csv 4KB
urls.csv 4KB
viewIncrsRatio.csv 4KB
viewIncreasement.csv 4KB
headers.csv 2KB
BSWorkday.csv 258B
BSWeekend.csv 257B
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
共 222 条
- 1
- 2
- 3
资源评论
不走小道
- 粉丝: 3210
- 资源: 5120
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功