基于spark的微博数据分析

project-1

image-20210310205159319

主要数据介绍

  • sql文件
  • weibodatabase.sql :原始数据
  • weibo_analysis.sql:分析结果数据

用户信息表

user(用户表)
字段注解
uid用户id
screen_name昵称
name用户姓名
province省份
city市区
location地区(县)
url微博主页链接
gender性别
followsnum粉丝数
friendsnum关注(他人)数
statusenum用户微博数
favouritesnum用户收藏数
created_at用户创建时间

省份编码表

bianma(微博省份编码映射)
字段注解
Provinc编码
Zhongwen对应省份中文

微博内容表

weibo(微博表)
字段注解
mid微博id
data微博发表日期
text微博内容
source发表来源(平台终端)
reopstnum转发数
commentsnum评论数
attitudesnum点赞数
uid用户id
topic微博相关主题

数据分析

项目构建

使用java程序实现websocket服务端,每隔几秒请求数据库获取数据,数据库信息在不断更新,前台数据就动态展现,对于流式处理可以将结果不断写入数据库,服务端不断发送数据库信息,前台动态演示。

image-20210310212250504

前端展示

使用echart工具使数据可视化

image-20210310210122799

数据分析结果演示

微博内容热词统计(房价话题)(Fangjia_hotwords.scala)

从数据库获取微博内容数据为dataframe,并将其写入kafka,然后用structured streaming进行热词统计,其中用hanlp工具包 进行分词,统计机构名nt,地名ns, 人名nr, 形容词a

image-20210310210656735

统计数据中粉丝数量前20的微博用户(Fans_analysis.scala)

image-20210310210738670

微博中国各个省份人口分布统计(PopulationDistribution.scala)

image-20210310210924759

某一话题下微博发布时间分布情况 (Timedistribution.scala)

主要是计算某一话题下一条微博的所在时间段的数量,分为8个时段

从date中提取小时数,根据小时数所在的区间对应到相应的时间段统计数量,再算成比例

一天以24小时计对应的时间段
0-5凌晨
5-7早上
7-11上午
11-13中午
13-17下午
17-19傍晚
19-23晚上
23-0深夜

image-20210310211324532

统计微博发布设备(前8个)(ClientAnalysis.scala)

取发布设备,用sparksql 进行wordcount

image-20210310211449920

image-20210310211514230

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐