momo聊天记录数据分析
目录
目标
需求
数据内容
建库建表
可视化
目标
需求
数据内容
消息时间
|
发件人
昵称
|
发件人
账号
|
发件人
性别
|
发件人
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聊天记录数据分析相关推荐
- R语言应用实战系列(一)-基于R对QQ群聊天记录数据分析
前言 以下是我为大家准备的几个精品专栏,喜欢的小伙伴可自行订阅,你的支持就是我不断更新的动力哟! MATLAB-30天带你从入门到精通 MATLAB深入理解高级教程(附源码) tableau可视化数据 ...
- 干货:QQ聊天记录数据分析
如果您对某个QQ聊天群感兴趣,并想了解某段时间内大家都聊了什么话题?或者是群里哪些人最活跃?或者这些群员都在哪些时间段比较活跃?本文将教你用R实现这些问题的回答. 一.下载QQ群聊天记录 如果您还不知 ...
- 用Python掌握QQ群聊天记录数据分析
当你打开QQ群时,你是否想过如何用Python提取里面的数据呢?随着社交媒体的兴起,QQ群成为了人们交流的重要平台,而提取这些数据可以帮助我们了解用户喜好和行为.那么,如何使用Python提取QQ群数 ...
- 爱情大数据 | 你的专属微信聊天记录统计
微信聊天记录数据分析 或许每个人的微信列表里都有几个不舍删除的聊天记录,经年累月,这些聊天记录越积越多,终将成为你和这个人之间的美好回忆.这些回忆中有许多信息值得挖掘,尤其是情侣之间,将这些信息统计出 ...
- python便捷数据怎么获取_Python数据分析入门——从数据获取到可视化
基本信息 作者: 沈祥壮 ISBN:9787121336539 上架时间:2018-3-22 出版日期:2018 年3月 开本:16开 页码:260 版次:1-1 [插图] 编辑推荐 了解基本的Pyt ...
- 数据分析|你和女朋友的聊天记录
数据分析|你和女朋友的聊天记录 1.提取朋友聊天记录备份到电脑 2.将电脑的聊天记录备份到模拟器. 首先,下载夜神模拟器 在夜神模拟器下载微信 使用windows客户端版的微信进行备份,如图 3.打开 ...
- QQ 聊天记录简单数据分析
手机里的聊天记录一直没删,有的群的消息已经几万条了,所以做一下简单的数据分析. 提取数据 Android 的 QQ 聊天记录比较容易导出,这里说一下 iOS 未越狱的,将 iOS 用 iTunes 备 ...
- 美国进入“非结构化”数据分析新时代
美国进入"非结构化"数据分析新时代 目前,对国内大部分企业级客户而言,大数据时代已经真正到来了. 虽然,近年来"大数据"及"数据分析" ...
- 程序员刚结婚3天,老婆疑似骗婚?聊天记录曝光,网友:拜金实锤
以去年为数据分析,2018年全国结婚登记数为1010.8万对,离婚登记数为380.1万对.对于这些数据如何进行科学解读?引起社会广泛关注.遗憾的是,一时间,"我国离婚率高达38%" ...
最新文章
- linux各种复制命令
- 从单租户IaaS到多租户PaaS——金融级别大数据平台MaxCompute的多租户隔离实践
- rss阅读器 java_RSS阅读器
- python2 md5加密_Python的加密方式:MD5加密
- centos7,pyinstaller打包出application/x-sharedlib,这是一个求助的帖子
- [转]supervisor 安装、配置、常用命令
- 信号检测与估计理论 pdf_CVPR2020|行人检测与重识算法推荐论文源码大盘点
- 前端 JavaScript 之『防抖』的简单代码实现
- IHttpHandler给图片加水印
- 2019全国地图数据下载-高德腾讯百度地图
- RegExp(正则表达式)
- linux informix数据库下载,informix数据库基础下载_informix数据库基础官方下载-太平洋下载中心...
- XMind2TestCase自定义测试用例设计模板
- 大地高、海拔高 地心纬度、大地纬度/地理纬度
- TortoiseGit安装和使用的图文教程
- Spring 漏洞及其修复方案
- Vue 实现简单的时间轴 时间进度条
- JSP如何统计页面访问次数
- 页面布局高度塌陷问题和解决方案
- my first try _ 网络适配器问题以及解决办法
热门文章
- http请求报400错误的原因分析
- iphone6s计算机没了,苹果6s每次链接电脑都没反应为什么
- Bootstrap V3 dropdown的hover玩法
- 最新iOS面试题:如何优化 App 的的包大小?(③系列更新)
- 用计算机的说法,计算机题
- OTT变革进入“深水区”,看酷开系统7.0如何搅动“新硬件”蓝海
- 浙二大数据朱继红_国社浙一周 | 让“大数据”走进“浙”里生活
- Expecting property name enclosed in double quotes解决篇
- Day10-网页布局实战CSS3
- [cp]我想说的就是我们宇宙中心是个白洞,也是98%的宇宙暗质量来源,这也符合一般天体质量分配。宇宙没有秘密了,我你我也可以开心的编写程序了,不要再想其他的了。这是个新年礼物! ​​​[/cp]