本项目基于Bilibili的分开信息,实现需求的主要模块为Flink + eCharts,点击直达官网。 项目代码主要是Scala + Python实现,建议学习大数据的最好掌握Java或Scala,学习资料丰富些。
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 |
来看看效果,先上个静态的,这个简单需求完全可以不用框架实现,但已奉上粗漏的Flink代码,让大佬们适应一小下。
- 需求一:弹幕在视频时间线上分布情况
- 需求二:视频净观看量、设定时间段内增量及增长率动态统计
为了调度代码我把时间设置得非常小,实际使用应该以小时计
- Flume、Kafka启动顺序
- 首先需要启动集群ZooKeeper,然后是Kafka服务、Flume
- 启动Redis
- 爬虫使用了Redis存储视频一些静态信息
- 启动爬虫
- 爬虫文件为PythonWorm/bilibiliWorm.py
- 启动Flink
- FlinkAnalysis/src/main/scala/com.ck.bulletScreen & pageView
- PV还有静态代码在
- 启动Flask
- pyecharts下,每个需求一个文件
- py会有一个对应的html文件,在html中写的eCharts代码,参考官方文档,要啥有啥
在config&ShellFiles里放了flume配置文件与一些脚本文件,方便有需要的借鉴~
- xsync.sh
- 同步文件脚本
- .bash_foo
- 函数脚本,将各种启动、维护代码写成函数,放入以统一管理
- .bash_aliases
- alias统一管理脚本
- .bash_profile
- 在这个文件中需要加入引用.bash_aliases的代码
注意以上 . 开头的文件都放在 ~ 中
- 暂时爬到的弹幕还是放在内存中去重,但大数据嘛,肯定不能这么干啊,之后会补充上布隆加Redis方案,使用布隆可能有少量数据会错误识别,但弹幕嘛,要求也没那么高
- 暂时各个图表需求都是分散的,且没有改Flask端口,一次只能启动一个;之后会将所有图集成到一个网页中,也考虑多端口使用
爬虫卡死:request添加timeout参数图表初始数据载入:通过设置flag及prepare_init_data函数处理初始数据,通过jsonify传递给js载入;散点图载入全量数据,PV图载入最后十条数据,如果数据不够则只显示对应条目数据散点图鼠标无触发信息,之后加上这个功能
- Java判断当前日期是否是节假日
- 基于网页服务提供的,因为没法大量申请,所以放弃使用了。
- Python操作Redis数据库
- 利用 Flask 动态展示 Pyecharts 图表数据的几种方法
- 解决github图片不显示的问题
- 我遇到的小问题,供遇同问题的大佬参考