黑马大数据学习笔记5-案例

这篇具有很好参考价值的文章主要介绍了黑马大数据学习笔记5-案例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

P73~77
https://www.bilibili.com/video/BV1WY4y197g7?p=73

需求分析

背景介绍

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

目标

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

需求

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

黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

数据内容

  • 数据大小:30万条数据
  • 列分隔符:Hive默认分隔符’\001’
  • 数据字典及样例数据

黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

DBeaver连接到Hive

黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

建库建表

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

--列举数据库
show databases ;
--如果表已存在就删除
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 "消息内容"
);

黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

加载数据

  • 上传文件到Linux系统
    直接拖拽上传
    黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

创建文件夹

hadoop fs -mkdir -p /chatdemo/data

放到指定目录

hadoop fs -put chat_data-30W.csv /chatdemo/data/

黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

  • load数据到表
load data inpath '/chatdemo/data/chat_data-30W.csv' into table tb_msg_source;
  • 验证结果
select msg_time, sender_name, sender_ip, sender_phonetype, receiver_name, receiver_network 
from tb_msg_source limit 10;

黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

ETL数据清洗

数据问题

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

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

黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

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

select msg_time from db_msg.tb_msg_source limit 10;

黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

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

select sender_gps from db_msg.tb_msg_source limit 10;

黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

需求

需求1:对字段为空的不合法数据进行过滤
where过滤
需求2:通过时间字段构建天和小时字段
date hour函数
需求3:从GPS的经纬度中提取经度和维度
split函数
需求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 "纬度"
);

黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

实现

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 tb_msg_source WHERE LENGTH(sender_gps) > 0;

黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

查看结果

select msg_time, msg_day, msg_hour, sender_gps, sender_lng, sender_lat from db_msg.tb_msg_etl limit 10;

黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

扩展

其实我们刚刚完成了
从表tb_msg_source 查询数据进行数据过滤和转换,并将结果写入到:tb_msg_etl表中的操作
这种操作,本质上是一种简单的ETL行为。

ETL:

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

从A抽取数据(E),进行数据转换过滤(T),将结果加载到B(L),就是ETL。
ETL在大数据系统中是非常常见的,后续还会继续接触到它。
目前简单了解一下即可。

指标计算

需求

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

需求指标统计

指标1:统计今日消息总量

--保存结果表
CREATE TABLE IF NOT EXISTS 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;
 

黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

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

--保存结果表
CREATE TABLE IF NOT EXISTS tb_rs_hour_msg_cnt 
COMMENT "每小时消息量趋势" AS  
SELECT  
    msg_hour, 
    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 msg_hour;
 

黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

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

CREATE TABLE IF NOT EXISTS 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

黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

指标4:统计今日发送和接收用户人数

--保存结果表
CREATE TABLE IF NOT EXISTS tb_rs_usr_cnt
COMMENT "今日发送消息人数、接受消息人数" AS
SELECT 
msg_day, 
COUNT(DISTINCT sender_account) AS sender_usr_cnt, 
COUNT(DISTINCT receiver_account) AS receiver_usr_cnt
FROM db_msg.tb_msg_etl
GROUP BY msg_day;
 

黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

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

--保存结果表
CREATE TABLE IF NOT EXISTS db_msg.tb_rs_s_user_top10
COMMENT "发送消息条数最多的Top10用户" AS
SELECT 
    sender_name AS username, 
    COUNT(*) AS sender_msg_cnt 
FROM db_msg.tb_msg_etl 
GROUP BY sender_name 
ORDER BY sender_msg_cnt DESC 
LIMIT 10;
 

黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

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

CREATE TABLE IF NOT EXISTS db_msg.tb_rs_r_user_top10
COMMENT "接收消息条数最多的Top10用户" AS
SELECT 
receiver_name AS username, 
COUNT(*) AS receiver_msg_cnt 
FROM db_msg.tb_msg_etl 
GROUP BY receiver_name 
ORDER BY receiver_msg_cnt DESC 
LIMIT 10;
 

黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

指标7:统计发送人的手机型号分布情况

CREATE TABLE IF NOT EXISTS db_msg.tb_rs_sender_phone
COMMENT "发送人的手机型号分布" AS
SELECT 
    sender_phonetype, 
    COUNT(sender_account) AS cnt 
FROM db_msg.tb_msg_etl 
GROUP BY sender_phonetype

黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

指标8:统计发送人的手机操作系统分布

--保存结果表
CREATE TABLE IF NOT EXISTS db_msg.tb_rs_sender_os
COMMENT "发送人的OS分布" AS
SELECT
    sender_os, 
    COUNT(sender_account) AS cnt 
FROM db_msg.tb_msg_etl 
GROUP BY sender_os
 

黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

可视化展示

BI

BI:Business Intelligence,商业智能。
指用现代数据仓库技术、线上分析处理技术、数据挖掘和数据展现技术进行数据分析以实现商业价值。

简单来说,就是借助BI工具,可以完成复杂的数据分析、数据统计等需求,为公司决策带来巨大的价值。

所以,一般提到BI,我们指代的就是工具软件。常见的BI软件很多,比如:
FineBI、SuperSet、PowerBI、TableAu等。

FineBI的介绍及安装

FineBI的介绍:https://www.finebi.com/

FineBI 是帆软软件有限公司推出的一款商业智能(Business Intelligence)产品。FineBI 是定位于自助大数据分析的 BI 工具,能够帮助企业的业务人员和数据分析师,开展以问题导向的探索式分析。

  • FineBI的特点:
    通过多人协作来实现最终的可视化构建
    不需要通过复杂代码来实现开发,通过可视化操作实现开发
    适合于各种数据可视化的应用场景
    支持各种常见的分析图表和各种数据源
    支持处理大数据

FineBI的界面
启动登陆,选内置数据看。
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

目录:首页大屏及帮助文档

仪表盘:用于构建所有可视化报表

数据准备:用于配置各种报表的数据来源

管理系统:用于管理整个FineBI的使用:用户管理、数据源管理、插件管理、权限管理等
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

FineBI配置数据源及数据准备

FineBI与Hive集成的官方文档:https://help.fanruan.com/finebi/doc-view-301.html

  • 驱动配置

问题:如果使用FineBI连接Hive,读取Hive的数据表,需要在FineBI中添加Hive的驱动jar包
解决:将Hive的驱动jar包放入FineBI的lib目录下

step1:找到提供的【Hive连接驱动】

step2:将这些文件放入FineBI的安装目录下的:webapps\webroot\WEB-INF\lib目录中
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

  • 插件安装

问题:我们自己放的Hive驱动包会与FineBI自带的驱动包产生冲突,导致FineBI无法识别我们自己的驱动包
解决:安装FineBI官方提供的驱动包隔离插件

step1:找到隔离插件

step2:安装插件

step3:重启FineBI
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

新建连接
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

测试连接,保存连接
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

数据准备
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记
选中8个分析的结果表,确定,然后更新数据。
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记
新建文件夹之后,选中,新建分析主题。
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

可视化展示

基于FineBI完成指标的可视化展现

选中数据
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记
添加组件

黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

修改黑色字
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记
重命名
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记
选择仪表板,拖进去,取消显示标题,调整大小,位置,颜色。
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记
类似操作,添加数据,然后完成标题展示。
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记
添加雷达图
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记
取消图例
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记
拖拽到仪表板,调整大小
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记
添加环饼状图
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

添加地图

黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

添加柱状图
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

添加词汇云图
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

添加趋势曲线图
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记
黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记

报表预览

黑马大数据学习笔记5-案例,大数据,大数据,学习,笔记文章来源地址https://www.toymoban.com/news/detail-631032.html

到了这里,关于黑马大数据学习笔记5-案例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《黑马程序员2023新版黑马程序员大数据入门到实战教程,大数据开发必会的Hadoop、Hive,云平台实战项目》学习笔记总目录

    本文是对《黑马程序员新版大数据入门到实战教程》所有知识点的笔记进行总结分类。 学习视频:黑马程序员新版大数据 学习时总结的学习笔记以及思维导图会在后续更新,请敬请期待。 前言:配置三台虚拟机,为集群做准备(该篇章请到原视频进行观看,不在文章内详细

    2024年02月03日
    浏览(42)
  • 【正在更新】【最新!黑马程序员Python自学课程笔记】课上笔记+案例源码+作业源码

    1.1字面量 1.2注释 1.3变量 debug工具的使用 1.对着某行代码 打断点 2.下方一步步 步进 1.4数据类型 1.5数据类型转换 错误示例 1.6标识符 变量的命名规范: 1.见名知意,简洁; 2.(多个单词)用下划线命名法 3.英文字母全小写 1.7运算符 1.8字符串的三种定义方式 1.9字符串的拼接

    2024年01月21日
    浏览(39)
  • 数组(个人学习笔记黑马学习)

      案例描述: 在一个数组中记录了五只小猪的体重 如: int arr[5] =(300,350,200,400,250): 找出并打印最重的小猪体重。   案例描述: 请声明一个5个元素的数组,并且将元素逆置(如原数组元素为: 1,3,2,5,4;逆置后输出结果为:4,5,2,3,1   作用: 最常用的排序算法,对数组内元素进行排序  

    2024年02月10日
    浏览(30)
  • 函数(个人学习笔记黑马学习)

      函数分文件编写一般有4个步骤 1.创建后级名为.h的头文件 2.创建后缀名为.cpp的源文件 3.在头文件中写函数的声明 4.源文件中写函数的定义    swap.h swap.cpp main.cpp

    2024年02月10日
    浏览(26)
  • 继承(个人学习笔记黑马学习)

    继承方式一共有三种: 公共继承 保护继承 私有继承 菱形继承概念 : 两个派生类继承同一个基类 又有某个类同时继承者两个派生类 这种继承被称为菱形继承,或者钻石继承

    2024年02月09日
    浏览(30)
  • 封装(个人学习笔记黑马学习)

    设计一个学生类,属性有姓备和学号,可以给姓名和学号赋值,可以显示学生的姓名和学号 1. public公共权限 2. protected 保护权限 3. private私有权限 struct 默认权限为公共 class默认权限为私有 设计立方体类(Cube) 求出立方体的面积和体积 分别用全局函数和成员函数判断两个立方体

    2024年02月10日
    浏览(30)
  • 多态(个人学习笔记黑马学习)

    多态分为两类 静态多态: 函数重载和 运算符重载属于静态多态,复用函数名 动态多态: 派生类和虚图数实现运行时多态 静态多态和动态多态区别: 静态多态的函数地址早绑定 · 编译阶段确定函数地址 动态多态的函数地址晚绑定 · 运行阶段确定函数地址 案例描述: 分别利用普

    2024年02月09日
    浏览(29)
  • 黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(6)解散部门

      指路(1)(2)(3)(4)(5)👇 黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(1)准备工作、部门管理_tlias智能学习辅助系统的需求分析-CSDN博客 https://blog.csdn.net/YOYU_/article/details/135476566 黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(2)员工管理|分页查询、

    2024年01月19日
    浏览(41)
  • 内存四区(个人学习笔记黑马学习)

    C++程序在执行时,将内存大方向划分为4个区域: 代码区:存放函数体的二进制代码,由操作系统进行管理的 全局区:存放全局变量和静态变量以及常量 栈区:编译器自动分配释放,存放函数的参数值,局部变量等 堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回

    2024年02月10日
    浏览(27)
  • 第一百一十四天学习记录:C++提高:类模板案例(黑马教学视频)

    main.cpp代码: myarray.hpp代码: 输出: 总结:能够利用所学知识点实现通用的数组。 个人感悟:学习了这个案例之后接下来的课程就是STL了,STL其实在我工作中写代码时经常碰到,尤其是在读同事代码的时候,因为没有学过,通过自行百度获得碎片的知识导致读起来很很吃力

    2024年02月16日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包