Hadoop综合案例 - 聊天软件数据

目录

    • 1、聊天软件数据分析案例需求
    • 2、基于Hive数仓实现需求开发
      • 2.1 建库
      • 2.2 建表
      • 2.3 加载数据
      • 2.4 ETL数据清洗
      • 2.5 需求指标统计---都很简单
    • 3、FineBI实现可视化报表
      • 3.1 FineBI介绍
      • 3.2 FineBI配置数据
      • 3.3 构建可视化报表

1、聊天软件数据分析案例需求

MR速度慢—引入hive

背景:大量的用户在线,通过对聊天数据的分析,构建用户画像,为用户提供更好的服务、以及实现高ROI的平台运营推广,给公司的发展决策提供精确的数据支撑。

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

需求:

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

原始数据:业务系统中导出的某一天24小时的用户聊天数据,TSV文件。列分隔符:制表符 \t
在这里插入图片描述
在这里插入图片描述

2、基于Hive数仓实现需求开发

在Notepad中可以通过显示所有字符来判断间隔符

打开Datagrip,创建一个hive工程,语言选择hive,并与hive服务器创建连接。
Datagrip中:

2.1 建库

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

2.2 建表

--------------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';

2.3 加载数据

--------------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;

在这里插入图片描述

2.4 ETL数据清洗

加载完数据后,需要判断加载过来的数据是否有效–ETL
问题与解决:

  • sender_gps字段有些记录为空,如何处理? – where length(sender_gps) =0筛选出非空的
  • 时间字段,只需要提取中间的小时信息? —substr(字段,12,1)提取小时
  • GPS经纬度是一个字段,需要获取经纬度两个? — split(字段,‘,’)根据逗号进行字段切割
  • 将ETL处理后的结果保存到一张新hive表中?—CTAS语法
    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 ;

数据量太多–记得limit 10

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

2.5 需求指标统计—都很简单

需求1:统计今日总消息量
group by 每日后count计数

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;--结果验证

需求2:统计今日每小时消息量、发送和接收用户数
按每天,每小时分组,计数

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;--结果验证

需求3:统计今日各地区发送消息数据量
按照每日与地区GPS分组,

出现在select后的字段,要么是group by 后的字段,要么是聚合函数字段,所以分组还加了经纬度字段。

case函数:将原本经纬度的string类型转换成double数字类型
cast(sender_lng as double)

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; --结果验证

需求4:统计今日发送消息和接收消息的用户数

按照天分组,对用户数进行去重统计

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; --结果验证

需求5:统计今日发送消息最多的Top10用户
按照天,用户分组,计数后排序,limit 10

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; --结果验证

需求6:统计今日接收消息最多的Top10用户
按照天,用户分组,计数后排序,limit 10

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;  --结果验证

需求7:统计发送人的手机型号分布情况
按照天,用户手机型号分组,对用户去重计数

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; --结果验证

需求8:统计发送人的设备操作系统分布情况

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;  --结果验证

3、FineBI实现可视化报表

进入可视化展示阶段

3.1 FineBI介绍

FineBI:https://www.finebi.com/
FineBI特点:可多人协作、拖拽不需要代码、适合各种分析场景、支持各种图表、支持大数据
已下载安装好

3.2 FineBI配置数据

将hive中数据连接到BI上。
FineBI与Hive集成的官方文档:https://help.fanruan.com/finebi/doc-view-301.html

驱动配置、安装插件-----都配置好了,可直接连接hive数据
配置数据操作

3.3 构建可视化报表

FineBI上各种拖拽操作

最后效果:
在这里插入图片描述

总结:很简单的一个案例,但把数据分析的整个流程走完了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/44897.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十八家省级大数据管理局盘点

数据智能产业创新服务媒体 ——聚焦数智 改变商业 随着智慧城市的发展,各省市逐渐设立了大数据管理局,各部门之间的信息互通随之更加便捷。同时,当数据实现了互联互通之后,将更有效地利用和挖掘数据价值。如今,我国已…

大数据之------------数据中台

一、什么是数据中台 **数据中台是指通过数据技术,对海量数据进行采集、计算、存储、加工,同时统一标准和口径。**数据中台的目标是让数据持续用起来,通过数据中台提供的工具、方法和运行机制,把数据变为一种服务能力,…

大数据平台

选型 大数据平台选型有三种选择: 1、使用云平台,优点是建设周期短、运维成本低,缺点费用贵、数据安全性; 2、使用商业化的大数据平台,优点搭建部署方便、稳定性好,缺点是成本高、不够灵活; …

国家数据局 VS 省级大数据局

来源:数据学堂 全文共 10672 个字,建议阅读 16 分钟 欢迎关注“谈数据”同名微信公众号,更多精彩等您来! 省级大数据局是新一轮机构改革中许多省份的“自选动作”,对完善地方政府数据治理体系意义重大。研究发现&am…

大数据平台功能

一 前言 计算机设备和信息数据的相互融合,对各个行业来说都是一次非常大的进步,已经渗入到工业、农业、商业、军事等领域,同时其大数据平台软件也得到一定发展。就目前来看,各类编程语言的发展、人工智能相关算法的应用、大数据时…

1028万!重庆统计局招标大数据平台,开建统计数据中台

2022年9月15日,重庆市统计大数据平台(CQS22C01140)发布中标(成交)结果公告,如下: 项目编号 CQS22C01140 项目名称 重庆市统计大数据平台 服务范围 大数据已成为新型生产要素和国家基础性战略资源,积极发挥政…

B2G最全的国内政务数据开放平台大汇总 数据驱动国计民生

数据是国家的战略性资源。政府部门在履行行政职能、管理社会公共事务的过程中采集和储存了大量数据,这些数据是社会的公共资源。 在保障国家秘密、商业秘密和个人隐私的前提下,如果将政府数据最大限度地开放出来,让社会进行充分融合和利用&a…

【大数据】中国省级大数据管理局

当下各级政府正在如火如荼地推进的智慧城市建设,大数据无疑更是关键中的关键。然而,从各地智慧城市、数字政府建设的具体实践来看,最大痛点和瓶颈也正是数据的匮乏。各地大数据匮乏的核心症结在于各级部门未能充分认识到大数据的重要性&#…

AllData一站式大数据平台【二】

1、机器学习算法平台ai-studio MLOPS-基于机器学习算法平台建设AllData MLOPS平台 2、AI算法应用市场ai-tasks 数据平台的人工智能引擎:AI算法驱动1、数据准备2、模型开发支持自定义与可视化模型开发3、训练和超参数调节4、模型服务5、模型调整和理解6、模型监控…

大数据_数据中台_数据汇聚联通

目录 一、数据采集、汇聚的方法和工具 1、线上行为采集 2、线下行为采集 3、互联网数据采集 4、内部数据汇聚 二、数据交换产品 1、数据源管理 2、离线数据交换 3、实时数据交换 三、数据存储的选择 1、在线与离线 2、OLTP与OLAP 3、存储技术 构建企业级的数据中台…

【企业微信】JS-SDK引入实现向企微群聊发送图文消息

一、需求 企业自建应用商城需要实现分享商品链接到群聊。&#xff08;标题/描述/图片/点击跳转商品链接H5详情页&#xff09;&#xff0c;API&#xff08;打开已有群聊并发送信息&#xff09;可实现企微文档 二、引入Js-sdk 方式一&#xff1a;链接引入 <script src"…

行业报告 | AI 赋能,人形机器人产业提速,把握产业链受益机会(上)

文 | BFT机器人 01 核心观点 核心观点: 人形机器人产业发展仍处于 0-1 阶段&#xff0c;当前行业投资逻辑偏向事件驱动型的主题投资&#xff0c;但可落地服务场景的人形机器人成长空间非常广阔&#xff0c;值得长期关注。本文将围绕以下热点问题作出讨论: D当前节点人形机器人产…

一周AIGC丨Meta 发布新一代开源大模型 Llama 2,大模型裁员潮不远了?

人们把Meta发布免费可商用版本 Llama 2比作“安卓时刻”&#xff0c;OpenAI护城河似乎一下子荡然无存&#xff0c;整个大模型市场格局面临巨变。据媒体报道&#xff0c;在以往&#xff0c;中国大模型公司可以靠商业授权赚钱利润&#xff0c;随着Llama 2开始允许商用&#xff0c…

寻寻觅觅,彩电厂商能否“智”取未来?

彩电业&#xff0c;还能不能好&#xff1f; 电视行业的发展&#xff0c;一直伴随着漫长的价格战。从黑白到彩电再到超大屏&#xff0c;从CRT到平板再到液晶&#xff0c;在每一轮技术革新之后&#xff0c;市场总会经历从落到起&#xff0c;从起到落的循环&#xff0c;然后陷入价…

Visualglm-6b

【官方教程】VisualGLM技术讲解_哔哩哔哩_bilibili报告文件下载: https://pan.baidu.com/s/1gfdpyfT6EVnygMPDO_iwvQ?pwd8wpc 提取码: 8wpcVisualGLM-6B 是一个开源的&#xff0c;支持图像、中文和英文的多模态对话语言模型&#xff0c;语言模型基于ChatGLM-6B&#xff0c;具有…

7月最新大模型排名!3700道保密试题、20个大模型参与评测|SuperCLUE

7月最新大模型排名&#xff01;3700道保密试题、20个大模型参与评测&#xff5c;SuperCLUE CLUE中文语言理解测评基准 中文通用大模型综合性评测基准SuperCLUE 2023年7月榜单 7月25日&#xff0c;SuperCLUE发布大模型7月榜单。 SuperCLUE: A Benchmark for Foundation Mo…

2022春招,算法岗最全面试攻略,吃透28个必问题直接速通大厂

算法是比较复杂又基础的学科&#xff0c;每个学编程的人都会学习大量的算法。而根据统计&#xff0c;以下这28个问题是面试中最容易遇到的&#xff0c;本文给出了一些基本答案&#xff0c;供算法方向工程师或对此感兴趣的程序员参考。 除了文章提到的这些题目之外我还整理了很多…

新鲜出炉的 NLP 算法岗社招面试经验分享

最近终于做好了选择&#xff0c;决定从杭州“搬迁”到了上海&#xff0c;一切安顿好之后&#xff0c;终于有功夫可以好好整理一下近期面试遇到的一些问题以及自己的一些小经验啦&#xff0c;希望对同样有跳槽需求的同行小伙伴们有些小小的帮助。 【注】文末提供面试技术交流群…

【算法岗面试】某小厂V面试题

文章目录 一、关于Bert模型以及蒸馏的问题&#xff1a;1.1 蒸馏的思想&#xff0c;为什么要蒸馏&#xff1f;1.2 蒸馏中的学生模型是&#xff1f;1.3 有哪些蒸馏方式?1.4 Bert 的输入是什么&#xff1f;1.5 字向量的 embedding 怎么训练得到的&#xff1f; 二、关于 transform…

2022秋招,算法岗最全面试攻略,吃透28个必问题直接速通大厂

算法是比较复杂又基础的学科&#xff0c;每个学编程的人都会学习大量的算法。而根据统计&#xff0c;以下这28个问题是面试中最容易遇到的&#xff0c;本文给出了一些基本答案&#xff0c;供算法方向工程师或对此感兴趣的程序员参考。 除了文章提到的这些题目之外我还整理了很多…