Hadoop+Hive数据分析综合案例

Hadoop+Hive数据分析综合案例(超级详细)

1.1. 需求分析

1.1.1. 背景介绍

聊天平台每天都会有大量的用户在线,会出现大量的聊天数据,通过对聊天数据的统计分析,可以更好的对用户构建精准的用户画像,为用户提供更好的服务以及实现高ROI的平台运营推广,给公司的发展决策提供精确的数据支撑。
我们将基于一个社交平台App的用户数据,完成相关指标的统计分析并结合BI工具对指标进行可视化展现。

1.1.2. 目标

基于Hadoop和Hive实现聊天数据统计分析,构建聊天数据分析报表
在这里插入图片描述

1.1.3. 需求
  • 统计今日总消息量
  • 统计今日每小时消息量、发送和接收用户数
  • 统计今日各地区发送消息数据量
  • 统计今日发送消息和接收消息的用户数
  • 统计今日发送消息最多的Top10用户
  • 统计今日接收消息最多的Top10用户
  • 统计发送人的手机型号分布情况
  • 统计发送人的设备操作系统分布情况
1.1.4. 数据内容
  • 数据大小:30万条数据

  • 列分隔符:Hive默认分隔符‘\001’

  • 数据字典及样例数据

  • 数据获取地址

    链接:https://pan.baidu.com/s/1Nx69z4YU2DgKb3YA8xbFqA?pwd=ut3v 
    提取码:ut3v
    

在这里插入图片描述

1.2. 加载数据

1、创建库表

-- 如果数据库已存在就删除
drop database if exists db_msg cascade;

-- 创建数据库
CREATE database db_msg;

-- 选择数据库
use db_msg;

--如果表已存在就删除
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 "消息内容"
);

2、数据导入
将课程资料中的chat_data-30W.csv文件上传到node1服务器的/home/hadoop目录下;

在Linux系统内执行以下命令:

# 切换工作目录
cd /home/hadoop

# 在HDFS系统中创建/chatdemo/data目录
hadoop fs -mkdir -p /chatdemo/data

# 将chat_data-30W.csv文件从Linux上传到HDFS系统中
hadoop fs -put chat_data-30W.csv /chatdemo/data

在DBeaver中执行以下命令:

-- 从HDFS系统中加载数据到Hive表
load data inpath '/chatdemo/data/chat_data-30W.csv' into table tb_msg_source;

-- 验证数据加载
SELECT * FROM tb_msg_source tablesample(100 rows);

-- 验证表中的数据条数
SELECT COUNT(*) from tb_msg_source tms ; 

1.3. ETL数据清洗转换

由于原始数据中存在部分不合规的数据,所以需要对数据进行清洗。
1、原始数据存在的问题

  • 问题1:当前数据中,有一些数据的字段(如sender_gps)为空,不是合法数据;
  • 问题2:需求中,需要统计每天、每个小时的消息量,但是数据中没有天和小时字段,只有整体时间字段,不好处理;
  • 问题3:需求中,需要对经度和维度构建地区的可视化地图,但是数据中GPS经纬度为一个字段,不好处理;

2、数据清洗需求

  • 需求1:对字段为空的不合法数据进行过滤;
  • 需求2:通过时间字段构建天和小时字段;
  • 需求3:从GPS的经纬度中提取经度和维度;
  • 需求4:将ETL以后的结果保存到一张新的Hive表中。
-- 创建存储清洗后数据的表
create table db_msg.tb_msg_etl(
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 "消息内容",
msg_day string comment "消息日",
msg_hour string comment "消息小时",
sender_lng double comment "经度",
sender_lat double comment "纬度"
);


-- 按照需求对原始数据表中的数据进行过滤,然后插入新建的表中
INSERT OVERWRITE TABLE db_msg.tb_msg_etl
SELECT 
	*,
	DATE(msg_time) as msg_day,
	HOUR(msg_time) as msg_hour,
	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;

执行完毕后,打开tb_msg_etl表,可以看到以下数据
在这里插入图片描述

扩展知识:ETL
从表tb_msg_source 查询数据进行数据过滤和转换,并将结果写入到:tb_msg_etl表中的操作。这种操作,本质上是一种简单的ETL行为。
ETL:

  • E,Extract,抽取
  • T,Transform,转换
  • L,Load,加载

从A抽取数据(E),进行数据转换过滤(T),将结果加载到B(L),就是ETL。

1.4. 指标统计

1、指标1:统计每日发送的消息总量

-- 统计每日消息总量
CREATE table db_msg.tb_rs_total_msg_cnt comment '每日消息总量' as
SELECT msg_day, COUNT(*) as total_msg_cnt  FROM db_msg.tb_msg_etl GROUP BY msg_day;
123

2、指标2:统计每小时消息量、发送和接收用户数

-- 统计每小时消息量、发送和接收用户数
CREATE table db_msg.tb_rs_hour_msg_cnt comment '每小时消息量情况' as
SELECT
	msg_hour,
	COUNT(*) as total_msg_cnt,
	COUNT(DISTINCT sender_account) as sender_user_cnt,
	COUNT(DISTINCT receiver_account) as receiver_user_cnt
FROM
	db_msg.tb_msg_etl
GROUP BY
	msg_hour;

3、指标3:统计每日各地区发送消息总量

-- 每日各地区发送消息总量
CREATE table db_msg.tb_rs_loc_cnt comment '每日各地区发送消息总量' as
SELECT
	msg_day,
	sender_lng,
	sender_lat,
	COUNT(*) as total_msg_cnt
FROM db_msg.tb_msg_etl 
GROUP BY msg_day, sender_lng, sender_lat;

4、指标4:统计每日发送和接收用户数

-- 每日发送和接收用户数
CREATE table db_msg.tb_rs_user_cnt comment '每日发送消息和接收消息人数' as
SELECT 
	msg_day,
	COUNT(DISTINCT sender_account) as sender_user_cnt,
	COUNT(DISTINCT receiver_account) as receiver_user_cnt 
FROM db_msg.tb_msg_etl
GROUP BY msg_day;

5、指标5:统计发送消息条数最多的TOP10用户

-- 发送消息条数最多的前10个用户
CREATE table db_msg.tb_rs_sneder_user_top10 comment '发送消息条数最多的10个用户' as
SELECT 
	sender_name,
	COUNT(*) as sender_msg_cnt 
FROM db_msg.tb_msg_etl
GROUP BY sender_name
SORT BY sender_msg_cnt DESC 
LIMIT 10;

6、指标6:统计接收消息条数最多的TOP10用户

-- 接收消息条数最多的10个用户
CREATE table db_msg.tb_rs_receiver_user_top10 comment '接收消息条数最多的10个用户' as
SELECT 
	receiver_name,
	COUNT(*) as receiver_msg_cnt 
FROM db_msg.tb_msg_etl
GROUP BY receiver_name 
SORT BY receiver_msg_cnt DESC 
LIMIT 10;

7、指标7:统计发送人的手机型号

-- 统计发送人的手机型号
CREATE table db_msg.tb_rs_sender_phone comment '发送人手机型号分布' as
SELECT 
	sender_phonetype,
	COUNT(*) as cnt
FROM db_msg.tb_msg_etl
GROUP BY sender_phonetype;

8、指标8:统计发送人的设备操作系统分布情况

-- 统计发送人的设备操作系统分布情况
CREATE table db_msg.tb_rs_sender_os comment '发送人设备操作系统分布' as
SELECT 
	sender_os,
	COUNT(*) as cnt
FROM db_msg.tb_msg_etl tme 
GROUP BY sender_os;

1.5. FineBI安装&配置

1.5.1. FineBI的下载和安装

1、打开FineBI官方https://www.finebi.com/,注册并下载FineBI个人试用版本客户端;
在这里插入图片描述
在这里插入图片描述

2、在本地物理机上安装刚才下载的客户端(和安装其他软件一样的操作),安装完成之后,启动FineBI客户端;
在这里插入图片描述

3、启动之后,输入FineBI官网提供的激活码,然后点击“使用BI”按钮,此时FineBI客户端开始启动(这个过程可能较长,需要耐心等待,过程中可能会弹出openJDK请求防火墙的权限,需要同意);
在这里插入图片描述
在这里插入图片描述
4、FineBI客户端启动成功后,会自动打开浏览器,并打开http://localhost:37799/webroot/decision/login/initialization网页,进入配置页面,此时可以配置BI软件的管理员账号、密码;
在这里插入图片描述
5、账号设置完毕后,需要配置FineBI的数据库,FineBI类似于Hive也有元数据需要管理,对于个人使用来说,可以使用FineBI的内置数据库,若是生产环境使用,则建议使用外接数据库;
在这里插入图片描述
6、点击“直接登录”之后,BI系统会自动跳转到登录界面,输入刚才设置的管理员账号和密码进行登录;
在这里插入图片描述
7、登录FineBI系统后,可以在其目录内发现一些内置的模板和样例数据,以及新手入门指引等,可以作为配置个人所需模板的参考;
在这里插入图片描述
至此,FineBI客户端已安装完毕。

1.5.2. 配置FineBI与Hive的连接

1、接下来需要配置FineBI连接Hive的隔离插件。进入FineBI系统中,在“管理系统-插件管理-我的插件-从本地安装”,然后选择课程资料中,FineBI文件夹中的fr-plugin-hive-driver-loader-3.0.zip,然后系统会安装Hive隔离插件;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2、然后,使用记事本打开FineBI安装目录下webapps\webroot\WEB-INF\embed\finedb目录下的db.script文件,将其中的INSERT INTO FINE_CONF_ENTITY VALUES('SystemConfig.driverUpload','false')修改为INSERT INTO FINE_CONF_ENTITY VALUES('SystemConfig.driverUpload','true')。这样才能安装Hive驱动。
在这里插入图片描述

3、然后,重启FineBI客户端,先关闭FineBI客户端,然后再在桌面重新打开FineBI的客户端;
在这里插入图片描述
在这里插入图片描述
4、重新登录系统后,需要先安装Hive驱动,打开FineBI官方帮助手册,Hadoop Hive数据连接章节:https://help.fanruan.com/finebi/doc-view-301.html,根据其指示下载对应版本的驱动包和日志jar包;
在这里插入图片描述
5、下载完成后,将两个压缩包里的所有jar文件解压到一个文件夹中;
在这里插入图片描述
6、在系统中,依次点击“管理系统-数据连接-数据连接管理-驱动管理”,进入驱动管理界面;
在这里插入图片描述
7、在驱动管理界面点击“新建驱动”按钮,填写驱动名称,然后点击“确定”按钮;
在这里插入图片描述
8、然后点击“上传文件”按钮,将刚才解压的所有jar文件选中上传;
在这里插入图片描述
9、上传完成后,在“驱动”栏选择Hive驱动,然后点击右上角的“保存”按钮,完成Hive驱动的添加。添加成功后,点击左上角的“退出驱动管理”按钮;
在这里插入图片描述
10、点击数据连接管理界面的“新建数据连接”按钮,打开新建数据连接界面;
在这里插入图片描述
11、在打开的页面中选择“所有”选项卡,然后点击“Hadoop Hive”;
在这里插入图片描述
12、在Hadoop Hive页面填写虚拟机Hive服务(即hiveserver2服务)的相关信息,填写完毕后,点击右上角的“测试连接”按钮,看到“连接成功”提示代表配置成功,然后点击右上角的“保存”按钮,Hive连接创建完毕。

在这里插入图片描述
在这里插入图片描述
至此,FineBI到Hive的数据连接配置完成。后续将进行可视化面板的配置。

1.6. 可视化展示

本节的目标是使用FineBI配置出如下的可视化看板。
在这里插入图片描述
1、创建报表。登录系统后,依次点击“公共数据-新建文件夹”,创建本案例中所使用的文件夹,然后给文件夹命名为“Hive数据分析”。
在这里插入图片描述
2、选择刚才新建的“Hive数据分析”文件夹,然后点击上方的“新建数据集”按钮,选择“数据库表”。
在这里插入图片描述
3、然后将前面章节所创建的8个指标的数据表选中,然后点击右上角的“确定”按钮;
在这里插入图片描述
4、点击“确定”后,可以看到在“Hive数据分析”文件夹下出现了前面选中的表(以表注释命名);
在这里插入图片描述
5、依次点开每张表,然后点击“更新数据”按钮,将Hive中的数据拉取过来;
在这里插入图片描述
6、依次点击“我的分析-新建文件夹”,将新建的文件夹命名为“Hive数据分析”;
在这里插入图片描述
7、选择“Hive数据分析”,然后点击“新建分析主题”,会在另一个浏览器窗口打开分析主题页面;
在这里插入图片描述
8、在分析主题页面选择“公共数据”-刚才新建的Hive数据分析数据集中的“每日发送消息和接收消息人数”,然后点击“确定”按钮,将该数据构建进来;
在这里插入图片描述
9、构建好后,点击下方的“组件”Tab,进入组件配置中,选择“KPI指标卡”,然后将左侧的“sender_user_cnt”字段拖动到“文本”栏中,然后点击文本栏的配置按钮;
在这里插入图片描述
10、在弹出的文本栏配置中,取消“固定字体大小”,然后编辑内容,将内容的前缀改为“发送消息人数:”即可;
在这里插入图片描述
在这里插入图片描述
11、对组件Tab进行重命名,改为“发送消息人数”,然后点击页面下部的“添加仪表板”按钮,添加一个仪表板;
在这里插入图片描述
12、然后在仪表板中,将刚才配置好的“发送消息人数”组件拖动到仪表板上,并调整好位置和大小,点击组件旁边的下拉按钮,取消“显示标题”的勾选;
在这里插入图片描述
13、然后点击右上角的“仪表板样式”,选择“默认暗黑”就可以修改整个数据看板的背景;
在这里插入图片描述
14、然后相同的方式,新建“接收消息人数”的组件,并摆放在该仪表板上;
在这里插入图片描述
15、选择“数据”Tab,然后点上面的“+”按钮,然后选择“公共数据-Hive数据分析-每日消息总量”,然后点击确定;
在这里插入图片描述
16、然后添加“总消息数”组件,参考上面完成组件配置,并摆放在仪表板上;
在这里插入图片描述
在这里插入图片描述
17、按照类似方法创建“发送消息最多的用户TOP10”组件;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
18、按照类似方法创建“发送用户操作系统占比”组件;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
19、按照类似方法创建地图组件;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
20、按照类似方法创建“接收消息最多的用户TOP10”组件;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
21、按照类似方法创建“发送用户手机型号分布”组件;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
22、按照类似方法创建“每小时消息量趋势”组件;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
至此,所有内容结束。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

领夹麦克风哪个品牌好?麦克风品牌排行榜前十名推荐

​在如今这个信息爆炸的时代,无论是进行远程会议还是创作网络内容,一个高品质的无线领夹麦克风都能让你的声音更加响亮清晰。技术的发展为我们带来了多样化的选择,但同时也带来了选择上的困难。为了解决这一难题,我根据多年的使用…

高防CDN是如何应对DDoS和CC攻击的

高防CDN(内容分发网络)主要通过分布式的网络架构来帮助网站抵御DDoS(分布式拒绝服务)和CC(挑战碰撞)攻击。 下面是高防CDN如何应对这些攻击的详细描述: 1. DDoS攻击防护 DDoS攻击通过大量的恶…

pxe自动装机与无人值守

一、pxe与无人值守 pxe:c/s 模式,允许客户端通过网络从远程服务器(服务端)下载引导镜像,加载安装文件,实现自动化安装操作系统。 pxe的优点: 1、规模化 同时装配多台服务器(20多&…

wine和crossover哪个好 使用crossover有什么优势

如果你是Mac或Linux用户,你可能会遇到这样的情况:你想要运行一些Windows上的应用程序或游戏,但是你的操作系统并不支持它们。这时候,你有几种选择:一是安装双系统,也就是在你的电脑上同时安装Windows或Linu…

【权威出版/投稿优惠】2024年社会发展与公共文化国际会议(SDPC 2024)

2024 International Conference on Social Development and Public Culture 2024年社会发展与公共文化国际会议 【会议信息】 会议简称:SDPC 2024 截稿时间:点击查看 大会地点:中国上海 会议官网:www.icsdpc.com 会议邮箱&#x…

介绍一款 web 安全测试工具

什么是wafw00f? wafw00f是一个针对Web应用程序安全性的开源工具,它可以在Web服务器上运行,检测并防御常见的网络攻击。 它利用了模块化设计和高度可配置性,使得安全性专家能够根据自己的需要来定制这个工具。 wafw00f包含了许多功…

使用pytorch搭建textCNN、BERT、transformer进行文本分类

首先展示数据处理后的类型: 第一列为文本,第二类为标注的标签,数据保存在xlsx的表格中,分为训练集和验证集。 textCNN 直接上整个工程代码: import pandas as pd import numpy as np import torch from torch.util…

python基础-数据结构——hash表、线性探测、二重探测、双重哈希、闭散列(分离链接)(拉链法)Python代码实现

文章目录 哈希表及其碰撞解决策略1. 引言2. 哈希表简介3. 哈希函数4. 碰撞解决策略4.1 分离链接法(拉链法)4.2 开放寻址法4.2.1 线性探测4.2.2 二次探测4.2.3 双重哈希 5. 总结 哈希表及其碰撞解决策略 1. 引言 哈希表是一种高效的数据结构&#xff0c…

利用WK2168实现串口服务器

ESP32 SPI与WK2168实现串口服务器 概述系统组成代码 概述 一些老设备通过RS485采集数据,如果在一个系统中采用几个RS485设备可能是一个不错的选择,但要是使用46个RS485数据采集设备为一个PLC提供外部数据,系统的性能就很难有保障了。通过一个…

软考对进入事业编的人有帮助吗?

首先肯定的说,软考是可以用来评职称的。 但是, 这取决于你所在公司的性质和工作岗位。 软考全国统一实施后,不再进行计算机技术与软件相应专业和级别的专业技术职务任职资格评审工作。计算机软件资格考试既是职业资格考试,又是…

Element - UI <el-table-column>多选数据提交后禁用已提交的多选框

1. 通过 selection-change"selectionChange" 将已选择的数据存入selectData数组中 <el-table :data"tableData" class"my-5" selection-change"selectionChange" > //多选框已选择的数据 const selectData ref([]); const sel…

品致分档高频电流探头交直流电流探头的功能和应用领域

品致分档高频电流探头可以精确测量最大直流 DC-12MHz&#xff0c;具有高带宽&#xff0c;高精度的测量特点&#xff0c;且支持量程档位切换&#xff0c;满足用户一机多用的需求。探头自带归零和消磁功能&#xff0c;在包容用户的使用环境下&#xff0c;精度也高达 1%。标准的BN…

SpringBoot集成ireport打印,并解决PDF中文显示问题

1、相关jar包引入 <!-- ireport报表相关 start--><dependency><groupId>net.sf.jasperreports</groupId><artifactId>jasperreports</artifactId><version>4.5.1</version><exclusions><exclusion><groupId…

蚓链数字化营销生态的影响力分享!

​家人们&#xff0c;今天来给大家分享一些关于数字化平台生态化对数字营销影响的具体案例。 比如某电商平台&#xff0c;通过生态化的建设&#xff0c;实现了精准的推荐算法。根据用户的浏览历史和购买行为&#xff0c;为他们推荐最符合需求的商品&#xff0c;大大提高了购买…

toB市场 | 我们喜欢赞助这样的展会活动

过去的六一儿童节&#xff0c;刚去成都参加了个行业内的展会。受护网行动、儿童节等等的影响&#xff0c;这次去成都的客户并不算太多&#xff0c;但会议延续了一贯的高品质&#xff0c;让我们收货满满。 选择目标受众来得多的展会 不同厂商会视自己的产品和模式、目标客户来…

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《考虑发用电相似性的海上风电中长期双边协商交易优化决策模型》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

Django 传递额外参数给视图函数

本书1-7章样章及配套资源下载链接: https://pan.baidu.com/s/1OGmhHxEMf2ZdozkUnDkAkA?pwdnanc 源码、PPT课件、教学视频等&#xff0c;可以从前言给出的下载信息下载&#xff0c;大家可以评估一下。 在Django框架中&#xff0c;URLconf模块还支持一种传递额外参数给视图函…

深度文章 | 管理驾驶舱成摆设?如何激活核心数据?

经营企业就跟驾驶车一样&#xff0c;小规模时像骑自行车&#xff0c;不需要仪表盘。而随着企业的成长&#xff0c;就像开摩托、汽车&#xff0c;需要仪表盘&#xff08;管理驾驶舱&#xff09;展示经营数据&#xff0c;指导管理者进行业务决策。 试想&#xff0c;领导面对一堆…

CLIP计算图片与文本相似度(多幅图片与一个文本)

一、CLIP介绍 CLIP&#xff08;Contrastive Language-Image Pre-training&#xff09;模型是一种通过自然语言监督来学习可迁移视觉模型的方法。CLIP模型利用海量的图像和相关文本数据对图像编码器和文本编码器进行联合训练&#xff0c;目标是最大化图像和文本对的余弦相似性。…

IP纯净度对跨境电商有影响吗?

当我们谈论代理IP时&#xff0c;通常会提到一个重要概念&#xff0c;那就是“IP纯净度”。 IP纯净度是指代理IP服务中所提供的IP地址的质量、干净程度和安全性&#xff0c;纯净度高的IP地址通常具备低恶意软件攻击的风险、良好的访问效果、稳定性和速度以及隐私保护等特点。在…