大数据综合实例—陌陌聊天数据分析

大数据综合实例—陌陌聊天数据分析

1. 需求分析

image-20220817151807460

  • 数据大小:14万条
  • 列分隔符:制表符 \t
    image-20220817152824026

2. 建库建表与加载数据

  • 建库
--------------1、建库-------------------

--如果数据库已存在就删除
drop database if exists db_msg cascade;
--创建数据库
create database db_msg;
--切换数据库
use db_msg;
  • 建表
create table db_msg.tb_msg_source(
  msg_time             string  comment "消息发送时间"
  , sender_name        string  comment "发送人昵称"
  , sender_account     string  comment "发送人账号"
  , sender_sex         string  comment "发送人性别"
  , sender_ip          string  comment "发送人ip地址"
  , sender_os          string  comment "发送人操作系统"
  , sender_phonetype   string  comment "发送人手机型号"
  , sender_network     string  comment "发送人网络类型"
  , sender_gps         string  comment "发送人的GPS定位"
  , receiver_name      string  comment "接收人昵称"
  , receiver_ip        string  comment "接收人IP"
  , receiver_account   string  comment "接收人账号"
  , receiver_os        string  comment "接收人操作系统"
  , receiver_phonetype string  comment "接收人手机型号"
  , receiver_network   string  comment "接收人网络类型"
  , receiver_gps       string  comment "接收人的GPS定位"
  , receiver_sex       string  comment "接收人性别"
  , msg_type           string  comment "消息类型"
  , distance           string  comment "双方距离"
  , message            string  comment "消息内容"
)
--指定分隔符为制表符
row format delimited fields terminated by '\t';
  • 加载数据并做初步检测
--------------3、加载数据-------------------
--上传数据文件到node1服务器本地文件系统(HS2服务所在机器)
--shell:  mkdir -p /root/hivedata

--加载数据到表D
load data local inpath '/hiveData/data1.tsv' into table db_msg.tb_msg_source;
load data local inpath '/hiveData/data2.tsv' into table db_msg.tb_msg_source;

--查询表 验证数据文件是否映射成功
select * from tb_msg_source limit 10;

--统计行数
select count(*) as cnt from tb_msg_source;

3. ETL数据清洗

抽取(extract)、转换(transform)、加载(load) 处理不合法的数据

按照具体要求处理ETL数据

-- 问题1:当前数据中,有一些数据的字段为空,不是合法数据
select
   msg_time,
   sender_name,
   sender_gps
from db_msg.tb_msg_source
where length(sender_gps) = 0
limit 10;
-- 解决:用where&length 如果长度为0则排除



-- 问题2:需求中,需要统计每天、每个小时的消息量,但是数据中没有天和小时字段,只有整体时间字段,不好处理
select
   msg_time
from db_msg.tb_msg_source
limit 10;
-- 解决:利用substring函数做截取,将需要的时间截取出来作为单独的字段
select  msg_time,substr(msg_time,1,10) as dayinfo,substr(msg_time,12,2) as hourinfo
from  tb_msg_source limit 2;


-- 问题3:需求中,需要对经度和维度构建地区的可视化地图,但是数据中GPS经纬度为一个字段,不好处理
select
   sender_gps
from db_msg.tb_msg_source
limit 10;
-- 解决:使用切割函数split进行切割,将经度和纬度分为两个不同的字段

  • CTAS语法

creat table as select : 将Select语句的结果保存到新表中

create table db_msg.tb_msg_etl as
select
  *,
  substr(msg_time,0,10) as dayinfo, --获取天
  substr(msg_time,12,2) as hourinfo, --获取小时
  split(sender_gps,",")[0] as sender_lng, --提取经度
  split(sender_gps,",")[1] as sender_lat --提取纬度
from db_msg.tb_msg_source
--过滤字段为空的数据
where length(sender_gps) > 0 ;

4. SQL编写思路与指标计算

  • 编写思路

image-20220817175207387

  • 统计今日总消费量
create table if not exists tb_rs_total_msg_cnt
comment "今日消息总量"
as
select
  dayinfo,
  count(*) as total_msg_cnt
from db_msg.tb_msg_etl
group by dayinfo;

select * from tb_rs_total_msg_cnt;--结果验证
  • 统计今日每小时消息量、发送和接收用户数
create table if not exists tb_rs_hour_msg_cnt
comment "每小时消息量趋势"
as
select
  dayinfo,
  hourinfo,
  count(*) as total_msg_cnt,
  count(distinct sender_account) as sender_usr_cnt,
  count(distinct receiver_account) as receiver_usr_cnt
from db_msg.tb_msg_etl
group by dayinfo,hourinfo;
  • 统计今日各地区发送消息数据量
create table if not exists tb_rs_loc_cnt
comment "今日各地区发送消息总量"
as
select
  dayinfo,
  sender_gps,
  cast(sender_lng as double) as longitude,   -- cast将string类型转化为double类型
  cast(sender_lat as double) as latitude,
  count(*) as total_msg_cnt
from db_msg.tb_msg_etl
group by dayinfo,sender_gps,sender_lng,sender_lat;

select * from tb_rs_loc_cnt; --结果验证
  • 统计今日发送消息和接收消息的用户数
create table if not exists tb_rs_usr_cnt
comment "今日发送消息人数、接受消息人数"
as
select
  dayinfo,
  count(distinct sender_account) as sender_usr_cnt,
  count(distinct receiver_account) as receiver_usr_cnt
from db_msg.tb_msg_etl
group by dayinfo;

select * from tb_rs_usr_cnt; --结果验证
  • 统计今日发送消息最多的Top10用户

最:涉及排序问题 order by

create table if not exists tb_rs_susr_top10
comment "发送消息条数最多的Top10用户"
as
select
  dayinfo,
  sender_name as username,
  count(*) as sender_msg_cnt
from db_msg.tb_msg_etl
group by dayinfo,sender_name
order by sender_msg_cnt desc
limit 10;

select * from tb_rs_susr_top10; --结果验证
  • 统计今日接收消息最多的Top10用户
create table if not exists tb_rs_rusr_top10
comment "接受消息条数最多的Top10用户"
as
select
  dayinfo,
  receiver_name as username,
  count(*) as receiver_msg_cnt
from db_msg.tb_msg_etl
group by dayinfo,receiver_name
order by receiver_msg_cnt desc
limit 10;

select * from tb_rs_rusr_top10;  --结果验证
  • 统计发送人的手机型号分布情况
create table if not exists tb_rs_sender_phone
comment "发送人的手机型号分布"
as
select
  dayinfo,
  sender_phonetype,
  count(distinct sender_account) as cnt
from tb_msg_etl
group by dayinfo,sender_phonetype;

select * from tb_rs_sender_phone; --结果验证
  • 统计发送人的设备操作系统分布情况
create table if not exists tb_rs_sender_os
comment "发送人的OS分布"
as
select
  dayinfo,
  sender_os,
  count(distinct sender_account) as cnt
from tb_msg_etl
group by dayinfo,sender_os;

select * from tb_rs_sender_os;  --结果验证

5. 数据可视化—FineBI

  • 下载安装
  • 加载本地插件
  • 连接Hive数据库

image-20220818115028367

  • 数据准备

image-20220818115201005

  • 将Hive中查询完成的表添加到FinBI

业务包可进行自动或定时更新

image-20220818115402300

  • 新建仪表盘Momocase

image-20220818142304322

  • 编辑组件得到最终效果

image-20220818151959416

大数据核心基础终于完结撒花了

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
科技创新与生产力 2021年 9 月 总第 332 期 基于大数据的社交网络数据分析研究 1 系统需求分析 社交网络已经成为人们日常生活的重要组成部 分袁 是人们传播信息尧 交流互动的重要途径遥 用户 在社交网络上活动时袁 会通过文本信息尧 转发信 息尧 评论等行为产生大量数据信息袁 分析尧 挖掘这 些 大数据 具有 重 要 意 义 遥 目 前 在 世 界 范 围 内 Twi t t er袁 Facebook 是用户最为活跃的社交网络平 台袁 因此本研究针对这两个平台提出一种分析 其数据信息的系统遥 本系统的主要需求包括以下 3 个方面遥 一是数据采集与融合遥 大数据分析必须以数据 采集与融合为前提袁 可以通过种子 U R L 实时采集 或通过设定关键词实时采集袁 利用网络爬虫从 Twi t t er袁 Facebook 中采集数据信息遥 虽然社交网络 平台的功能结构不同袁 界面样式也千差万别袁 但是 其都包含文本信息尧 评论信息尧 转发信息尧 互动关 系信息等袁 系统可以从中抽取存在共性的数据进行 分析尧 融合袁 再以结构化的方式存储于数据库[ 1] 遥 二是信息检索需求分析遥 信息检索方式主要有 两种院 一种是新任务检索袁 即不保留之前的检索数 据袁 开启一个新的检索任务曰 另外一种是当前任务 检索袁 在开启一个新任务检索时袁 上次任务检索的 数据也保留起来袁 两次检索得到的数据求交集或并 集袁 最终实现多任务数据融合遥 两种检索方式都可 以实现以下功能院 关键词检索袁 即输入关键词即可 获取用户信息尧 关系信息等相关结果曰 排除关键词 检索袁 即输入需要排除的关键词后搜索结果中不包 含关键词相关的信息曰 人物检索袁 即输入人物相关 的关键词即可检索到相关信息曰 时间检索袁 可以实 现在特定时间范围内的时间检索曰 来源检索袁 可以 检索到信息的来源数据等遥 三是数据分析与可视化需求遥 数据分析模块主 要对社交网络数据进行挖掘尧 分析袁 其也是整个系 统的核心部分袁 主要功能包括内容分析尧 行为分 析尧 用户画像尧 发现热点话题等遥 其中内容分析中 的内容包括用户发布尧 回复及转发的相关信息袁 除 了显性的信息数据外袁 系统还可以对信息中隐含的 内容做出情感分析袁 将用户感兴趣的信息标记出 来曰 行为分析是指分析用户在社交网络平台上的所 有操作行为袁 将用户的操作过程完整地记录下来袁 将用户的行为轨迹完整地构建尧 预测出来曰 用户画 像是将用户信息进行标签化处理袁 用标签将用户的 行为尧 观点尧 属性等个性化特征描述出来袁 并对用 户个性化的观点尧 关注的话题进行总结尧 分析曰 发 现热点话题主要是对用户的帖子数据进行聚类分 析袁 发现用户关注的热点话题[ 2] 遥 2 系统功能设计 根据上述需求可知袁 该系统需要实现数据采 集尧 数据预处理与融合尧 信息检索尧 数据分析与可 视化功能袁 其中核心功能为数据分析袁 下文详细介 绍系统各功能设计开发过程遥 2. 1 数据采集 数据采集是整个系统完成数据分析的基础模 块袁 传统数据分析过程中多采用社交网络开放的应 用程序接口渊A ppl i cat i on Program m i ng Int erf ace袁A PI冤 获取数据袁 但却易受到限制遥 利用网络爬虫技术采 集数据袁 可以不受数据限制遥 网络爬虫可以根据特 定的规则实现网页内容程序或脚本的自动采集袁 通 晁绪耀 1袁王颖颖 2 摘 要院本文提出一种基于大数据的社交网络数据分析系统袁 对社交网络用户的行为数据进行分析袁 能够更有针对性地 研究用户的圈子尧 影响力袁 分析尧 挖掘社交网络数据还能够做市场调研尧 事件预测尧 舆情监控及产品推荐袁 因此设计一 个能够对多源异构社交网络数据分析的系统具有重要意义遥 关键词院大数据曰社交网络曰数据分析曰系统设计 中图分类号院TP393. 09曰TP311. 13 文献标志码院A D O I 院10. 3969/ j . i ssn. 1674-9146. 2021. 09. 023 渊 1. 郑州职业技术学院袁 河南 郑州 450007曰 2. 郑州升达经贸管理学院袁 河南 新郑 450001冤 收稿日期院2021原01原04曰修回日期院2021原01原17 作者简介院晁绪耀 渊 1990要冤 袁女袁河南驻马店人袁硕士袁助教袁主要从事大数据研究袁E- m ai l 院zhengzhou_0122@ 163. com 遥 文章编号院1674-9146渊圆园21冤09原园23原园3 创 新 思 维 I nnovati ve Thi nki ng 023 .com.cn. All Rights Reserved. SC I -T E C H IN N O V A T IO N & P

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值