目录

目标

需求

数据内容

建库建表

可视化


目标

        基于 Hadoop 和 Hive 实现聊天数据统计分析,构建 聊天数据分析报表

需求

        统计今日 总消息量
        统计今日 每小时 消息量、发送和接收用户数  
        统计今日 各地区 发送消息数据量
        统计今日发送消息和接收消息的 用户数
        统计今日 发送消息最多的Top10用户
        统计今日 接收消息最多的Top10用户
        统计发送人的 手机型号分布情况
        统计发送人的 设备操作系统分布情况

数据内容

        数据大小:两个文件共14万条数据
         列分隔符: 制表符 \t
         数据字典及样例数据
消息时间
发件人
昵称
发件人
账号
发件人
性别
发件人
IP
发件人
系统
发件
人手
机型
发件人
网络制
发件人
GPS
收件人
昵称
收件人
IP
收件人
账号
收件人
系统
收件
人手
机型
收件人
网络制
收件人
GPS
收件人
性别
消息类型
双方距离 消息
2021-11-01 07:44:37  

182513

8366359

    男

195.188.

222.255

IOS 9.0 OPPO A11X 5G

123.257181,

48.807394

 梁丘雨琴  

136.66.

109.160

152369

9980735

 Android 7.0 华为 荣耀9X  4G 

9.332566,

42.956064

T

E

X

T

5.14

KM

你如那出水的芙蓉,亭亭玉立[lizhigushicom]。你是那样地美,美得让我无法自拔,笑容如春天般清丽秀雅,秀发如柳丝细腻顺滑,眼眸如涟漪百媚丛生。宝贝,对我来说你是最好的。

建库建表

将dataGrip设置为hive适用的sql(选择Apache Hive):

创建数据库:

--------------1、建库---------------------如果数据库已存在就删除
drop database if exists db_msg cascade;
--创建数据库
create database db_msg;
--切换数据库
use db_msg;

创建表:

--------------2、建表-------------------
--如果表已存在就删除
drop table if exists db_msg.tb_msg_source;
--建表
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';

在root/hivedata目录下存在数据文件:

数据加载:

--------------3、加载数据-------------------
--上传数据文件到node1服务器本地文件系统(HS2服务所在机器)
--shell:  mkdir -p /root/hivedata--加载数据到表中
load data local inpath '/root/hivedata/data1.tsv' into table db_msg.tb_msg_source;
load data local inpath '/root/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;

ETL数据清洗:

问题1:当前数据中,有一些数据的字段为空,不是合法数据

selectmsg_time,sender_name,sender_gps
from db_msg.tb_msg_source
where length(sender_gps) = 0
limit 10;

问题2:需求中,需要统计每天、每个小时的消息量,但是数据中没有天和小时字段,只有整体时间字段,不好处理

selectmsg_time
from db_msg.tb_msg_source
limit 10;

问题3:需求中,需要对经度和维度构建地区的可视化地图,但是数据中GPS经纬度为一个字段,不好处理

selectsender_gps
from db_msg.tb_msg_source
limit 10;

ETL的实现:

将Select语句的结果保存到新表中(利用sql的功能函数)

create table ... as select ... (在本次实验中很常用到!!!)

--ETL实现
--如果表已存在就删除
drop table if exists db_msg.tb_msg_etl;
--将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 ;--验证ETL结果
selectmsg_time,dayinfo,hourinfo,sender_gps,sender_lng,sender_lat
from db_msg.tb_msg_etl
limit 10;

新表在原有表的基础上新增了四列:

--验证ETL结果
select * from db_msg.tb_msg_etl;
selectmsg_time,dayinfo,hourinfo,sender_gps,sender_lng,sender_lat
from db_msg.tb_msg_etl
limit 10;

问题一:

--需求:统计今日总消息量
create table if not exists tb_rs_total_msg_cnt
comment "今日消息总量"
as
selectdayinfo,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
selectdayinfo,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;
select * from tb_rs_hour_msg_cnt;--结果验证

问题三:统计今日各地区发送消息数据量

--需求:统计今日各地区发送消息数据量
create table if not exists tb_rs_loc_cnt
comment "今日各地区发送消息总量"
as
selectdayinfo,sender_gps,cast(sender_lng as double) as longitude,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
selectdayinfo,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用户

--需求:统计今日发送消息最多的Top10用户
create table if not exists tb_rs_susr_top10
comment "发送消息条数最多的Top10用户"
as
selectdayinfo,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用户

--需求:统计今日接收消息最多的Top10用户
create table if not exists tb_rs_rusr_top10
comment "接受消息条数最多的Top10用户"
as
selectdayinfo,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
selectdayinfo,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
selectdayinfo,sender_os,count(distinct sender_account) as cnt
from tb_msg_etl
group by dayinfo,sender_os;select * from tb_rs_sender_os;  --结果验证

可视化

FineBI连接Hive,所需要的hive插件在资源包:

 FineBI连接Hive

将表导入FineBI:

第一个图:

 FineBI文本设置

同理添加总发送消息人数以及总接收消息人数,实现效果:

设置经纬度:

组件样式:

添加雷达图:

玫瑰图:

组件设置:

词云图(组件设置):

折线图(组件设置):

最终实现效果:

momo聊天记录数据分析相关推荐

  1. R语言应用实战系列(一)-基于R对QQ群聊天记录数据分析

    前言 以下是我为大家准备的几个精品专栏,喜欢的小伙伴可自行订阅,你的支持就是我不断更新的动力哟! MATLAB-30天带你从入门到精通 MATLAB深入理解高级教程(附源码) tableau可视化数据 ...

  2. 干货:QQ聊天记录数据分析

    如果您对某个QQ聊天群感兴趣,并想了解某段时间内大家都聊了什么话题?或者是群里哪些人最活跃?或者这些群员都在哪些时间段比较活跃?本文将教你用R实现这些问题的回答. 一.下载QQ群聊天记录 如果您还不知 ...

  3. 用Python掌握QQ群聊天记录数据分析

    当你打开QQ群时,你是否想过如何用Python提取里面的数据呢?随着社交媒体的兴起,QQ群成为了人们交流的重要平台,而提取这些数据可以帮助我们了解用户喜好和行为.那么,如何使用Python提取QQ群数 ...

  4. 爱情大数据 | 你的专属微信聊天记录统计

    微信聊天记录数据分析 或许每个人的微信列表里都有几个不舍删除的聊天记录,经年累月,这些聊天记录越积越多,终将成为你和这个人之间的美好回忆.这些回忆中有许多信息值得挖掘,尤其是情侣之间,将这些信息统计出 ...

  5. python便捷数据怎么获取_Python数据分析入门——从数据获取到可视化

    基本信息 作者: 沈祥壮 ISBN:9787121336539 上架时间:2018-3-22 出版日期:2018 年3月 开本:16开 页码:260 版次:1-1 [插图] 编辑推荐 了解基本的Pyt ...

  6. 数据分析|你和女朋友的聊天记录

    数据分析|你和女朋友的聊天记录 1.提取朋友聊天记录备份到电脑 2.将电脑的聊天记录备份到模拟器. 首先,下载夜神模拟器 在夜神模拟器下载微信 使用windows客户端版的微信进行备份,如图 3.打开 ...

  7. QQ 聊天记录简单数据分析

    手机里的聊天记录一直没删,有的群的消息已经几万条了,所以做一下简单的数据分析. 提取数据 Android 的 QQ 聊天记录比较容易导出,这里说一下 iOS 未越狱的,将 iOS 用 iTunes 备 ...

  8. 美国进入“非结构化”数据分析新时代

     美国进入"非结构化"数据分析新时代 目前,对国内大部分企业级客户而言,大数据时代已经真正到来了. 虽然,近年来"大数据"及"数据分析" ...

  9. 程序员刚结婚3天,老婆疑似骗婚?聊天记录曝光,网友:拜金实锤

    以去年为数据分析,2018年全国结婚登记数为1010.8万对,离婚登记数为380.1万对.对于这些数据如何进行科学解读?引起社会广泛关注.遗憾的是,一时间,"我国离婚率高达38%" ...

最新文章

  1. linux各种复制命令
  2. 从单租户IaaS到多租户PaaS——金融级别大数据平台MaxCompute的多租户隔离实践
  3. rss阅读器 java_RSS阅读器
  4. python2 md5加密_Python的加密方式:MD5加密
  5. centos7,pyinstaller打包出application/x-sharedlib,这是一个求助的帖子
  6. [转]supervisor 安装、配置、常用命令
  7. 信号检测与估计理论 pdf_CVPR2020|行人检测与重识算法推荐论文源码大盘点
  8. 前端 JavaScript 之『防抖』的简单代码实现
  9. IHttpHandler给图片加水印
  10. 2019全国地图数据下载-高德腾讯百度地图
  11. RegExp(正则表达式)
  12. linux informix数据库下载,informix数据库基础下载_informix数据库基础官方下载-太平洋下载中心...
  13. XMind2TestCase自定义测试用例设计模板
  14. 大地高、海拔高 地心纬度、大地纬度/地理纬度
  15. TortoiseGit安装和使用的图文教程
  16. Spring 漏洞及其修复方案
  17. Vue 实现简单的时间轴 时间进度条
  18. JSP如何统计页面访问次数
  19. 页面布局高度塌陷问题和解决方案
  20. my first try _ 网络适配器问题以及解决办法

热门文章

  1. http请求报400错误的原因分析
  2. iphone6s计算机没了,苹果6s每次链接电脑都没反应为什么
  3. Bootstrap V3 dropdown的hover玩法
  4. 最新iOS面试题:如何优化 App 的的包大小?(③系列更新)
  5. 用计算机的说法,计算机题
  6. OTT变革进入“深水区”,看酷开系统7.0如何搅动“新硬件”蓝海
  7. 浙二大数据朱继红_国社浙一周 | 让“大数据”走进“浙”里生活
  8. Expecting property name enclosed in double quotes解决篇
  9. Day10-网页布局实战CSS3
  10. [cp]我想说的就是我们宇宙中心是个白洞,也是98%的宇宙暗质量来源,这也符合一般天体质量分配。宇宙没有秘密了,我你我也可以开心的编写程序了,不要再想其他的了。这是个新年礼物! ​​​[/cp]