Hadoop综合案例 - 聊天软件数据
这个聊天软件数据分析案例展示了如何使用Hive和FineBI从原始数据中提取有价值的信息。首先,通过Hive构建数据仓库,加载和清洗数据。接着,利用FineBI进行数据可视化,以图形和图表的形式直观展示数据分析结果。这个过程涉及到数据的ETL(提取 Extract, 转换 Transform, 加载 Load)过程,包括数据清洗、数据建模和数据展示等多个环节。
相关问题
1. 如何处理缺失数据,例如变量sender_gps为空的情况?
- 在SQL中,可以使用LENGTH(sender_gps)函数来计算字段的长度,然后用WHERE子句过滤出长度为0的记录,即非空值。
2. 在数据分析中,如何选择合适的时间字段来分析每小时的消息量?
- 在聊天数据的记录中,通常包含时间戳信息。通过提取时间戳中的小时部分,可以实现每小时消息量的统计。SQL语句中可以考虑使用DATE_FORMAT函数来提取时间信息。
3. 如何确保数据分析结果的准确性和可靠性?
- 数据清洗是关键步骤。在加载数据后,需要对数据进行有效性检查和清洗,包括处理缺失值、异常值和重复数据。此外,对数据进行验证和测试,确保分析结果的准确性和可靠性。
4. FineBI在数据可视化方面的主要优势是什么?
- 通过FineBI等数据可视化工具,可以将复杂的数据转换成直观的图表和图形,帮助快速理解数据模式和趋势,提高决策效率。FineBI提供了丰富的图表类型和灵活的数据处理功能,支持实时交互式的数据探索。
解决实质性问题或提供帮助
这些案例和相关问题的解答可以帮助数据分析师和业务决策者更好地理解和处理数据。通过准确的数据清洗、选择合适的时间粒度和利用强大的数据可视化工具,组织可以更有效地提取信息,洞察用户行为,优化服务和营销策略,最终提升业务绩效。
目录
-
- 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筛选出非空的
- 时间字段,只需要提取中间的小时