大数据从入门到精通(超详细版)之Hive的案例实战,ETL数据清洗!!!

news2024/11/19 11:26:28

前言

嗨,各位小伙伴,恭喜大家学习到这里,不知道关于大数据前面的知识遗忘程度怎么样了,又或者是对大数据后面的知识是否感兴趣,本文是《大数据从入门到精通(超详细版)》的一部分,小伙伴们如果对此感谢兴趣的话,推荐大家按照大数据学习路径开始学习哦。

以下就是完整的学习路径哦。

前面我们已经学习完了Hive的各自基本操作与基础知识,本文主要介绍Hive的实战篇章,主要关于真实环境下会遇到的各种问题,其中主要是Hive的数据清洗工作。

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

大数据从入门到精通文章体系!!!!!!!!!!!!!!

↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑

推荐大家认真学习哦!!!

在这里插入图片描述

文章目录

  • 前言
  • 需求分析
  • 数据准备
  • 建库建表
  • 数据清洗
  • 结尾

需求分析

聊天平台每天都会有大量的用户在线,会出现大量的聊天数据,通过对聊天数据的统计分析,可以更好的**对用户构建精准的用户画像,**为用户提供更好的服务以及实现高ROI的平台运营推广,给公司的发展决策提供精确的数据支撑。

我们将基于一个社交平台App的用户数据,完成相关指标的统计分析并结合BI工具对指标进行可视化展现。

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

需求:

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

数据准备

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

在这里插入图片描述

上传数据:

##先查看数据的大致样式
cat data_30w | more

在这里插入图片描述

将数据导入Hive当中:

##创建HDFS目录下的/chat/demo
hdfs dfs -mkdir -p /chatdemo/data
##将本地数据上传上去
hdfs dfs -put data_30w /chatdemo/data

建库建表

  • –如果数据库已存在就删除

    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 ;
    
  • –建表(没有指定分隔符,所有使用Hive默认的分隔符 : \001)

    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 "消息内容"
    );
    
  • 加载数据到表当中, 因为我们是从HDFS文件系统当中加载的数据,所以此时不需要使用local关键字

    load data inpath '/chatdemo/data/data_30w' into table tb_msg_source;
    
  • 验证数据的加载

    select * from tb_msg_source tablesample ( 100 rows );
    

    可以看到数据已经加载进入表当中了

    在这里插入图片描述

  • 验证数据的条数

    select count(*) from tb_msg_source
    

    在这里插入图片描述

数据清洗

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

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

实现:

创建ETL表:

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

ETL:E,Extract,抽取T,Transform,转换L,Load,

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

ETL在大数据系统中是非常常见的,后续我们还会继续接触到它。目前简单了解一下即可。

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 "纬度"
);

开始ETL过程 :

INSERT OVERWRITE TABLE db_msg.tb_msg_etl
SELECT 
    *, 
    day(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;

将经纬度与时间都分隔出来了.

在这里插入图片描述

以上就是本文实战操作.

结尾

恭喜小伙伴完成本篇文章的学习,相信文章的内容您已经掌握得十分清楚了,如果您对大数据的知识十分好奇,请接下来跟着学习路径完成大数据的学习哦,相信你会做到的~~~

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓

大数据从入门到精通文章体系!!!!!!!!!!!!!!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安全生产知识竞赛活动小程序界面分享

安全生产知识竞赛活动小程序界面分享

SCR截面速度、氨氮比等标准及相对标准偏差计算

SCR截面速度、氨氮比等标准及相对标准偏差计算 # -*- coding: utf-8 -*- """ 联系QQ:3123575367,专业SCR脱硝仿真。 Created on Wed Sep 20 20:40:30 2023 该程序用来处理fluent通过xyplot导出的数据,可计算标准偏差SD、相对标准偏差RSD…

linux 安装 wordpress

文章目录 linux 安装 wordpress1. wordpress 简介2. wordpress功能和特点3. 部署要求4. 环境搭建4.1 部署 nginx4.1.1 新增配置文件 4.2 部署 PHP74.2.1 查看当前版本4.2.2 YUM 安装 PHP74.2.3 查看 PHP 版本4.2.4 启动PHP-FPM4.2.5 修改配置文件4.2.6 重启服务 4.3 部署 mysql…

Spring事务2+银行转账拓展

前言 Transactional()内可以写的属性 一、Dao层的更新 public interface LogDao {//#{}符号取的是接口方法中的形参 now()方法直接调用的内置函数Insert("insert into log (info,createDate) values(#{info},now())")void log(String info); }二、LogService层…

【Element】通知 Notification

ElementUI 弹出通知 created() {const h this.$createElementconst that thisthis.$notify({onClose: function () {that.do()},type: warning,duration: 5000, // 5秒后隐藏offset: 0, // 距离顶部dangerouslyUseHTMLString: false, showClose: false,customClass: notify-…

索引(含B树、B+树)

1、索引(index) 索引是在数据库表的字段上添加的,是为了提高查询效率存在的一种机制。 一张表的一个字段可以添加一个索引,当然,多个字段联合起来也可以添加索引。 索引相当于一本书的目录,是为了缩小扫描…

Nginx 防止跨站脚本 Cross-Site Scripting (XSS)

1、修改 nginx 配置 在 nginx.conf 配置文件中,增加如下配置内容: add_header X-XSS-Protection "1; modeblock";X-XSS-Protection 的字段有三个可选配置值,说明如下: 0: 表示关闭浏览器的XSS防护机制&…

计算机专业毕业设计项目推荐08-英语在线点读平台(SpringBoot+Vue+MongoDB)

英语在线点读平台(SpringBootVueMongoDB) **介绍****系统总体开发情况-功能模块****各部分模块实现** 介绍 本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较了解计算机专业的毕业设…

华为认证HCIP知识点

文章目录 前言考试内容数据通信领域各场景通用核心知识OSPFIS-ISBGPIGMPICMP 数据通信领域路由交换高阶知识大数据技术Hadoop 总结 前言 本博客仅做学习笔记,如有侵权,联系后即刻更改 科普: 考试内容 参考网址 HCIP认证主要定位于中小型网…

Spring面试题7:面试官:Spring是如何进行异常处理的呢?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Spring是如何进行异常处理的呢? Spring通过异常处理机制来处理应用程序中的异常。它提供了多种方式来处理异常,包括以下几种: 声明式事务管理:…

实战案例:场景测试之ATM机取款业务测试

本期,我们通过经典案例——ATM机的操作,来为大家详细说说如何撰写对应的测试用例。 案例 在我们日常生活中,ATM机是个大家都非常熟悉的事物。银行为例提高工作效率,方便客户随时办理基础的储蓄和提现业务,于是&#…

Qt5开发及实例V2.0-第二十章-Qt.QML动画特效

Qt5开发及实例V2.0-第二十章-Qt.QML动画特效 第20章 QML动画特效20.1 QML动画元素20.1.1 PropertyAnimation元素20.1.2 其他动画元素20.1.3 Animator元素 20.2 动画流UI界面20.2.1 状态和切换 20.3 图像特效20.3.1 3D旋转20.3.2 色彩处理 20.4 Qt 5.5(Qt Quick Extr…

web前端float布局、flex布局

1、float布局 <!DOCTYPE html> <html> <head><title>Login Page</title><style>body {font-family: Arial, sans-serif;background-color: #f3f3f3;}.container {max-width: 400px;margin: 0 auto;padding: 40px;background-color: #fff;…

变压器(电抗器) 红外测温作业指导书

1 范围 本标准化作业指导书规定了变压器(电抗器)红外测温(一般检测)工作的准备工作、测温流程图、 现场操作方法、测温周期和标准、测温记录管理等要求。 本标准化作业指导书适用于指导变压器(电抗器)红外测温的一般性检测工作。 2 规范性引用文件 下列文件对于本文件的应用…

我们为什么要做一名系统管理员?

我们为秩序而战&#xff0c;而服务器大叔则需要你成为系统管理员。这是个很好的机会&#xff0c;因为你已经管理过你有的那些系统&#xff0c;你本可以不需酬劳地管理那些日逐一日地运行的系统。但还是有一些面试官&#xff0c;愿意拿一笔很不错的薪水来找一些人去管理他们的系…

最频繁被问到的SQL面试题

面试感叹失败的原因可能有很多&#xff0c;而做成的道路只有⼀条&#xff0c;那就是不断积累。纯手工的8291字的SQL面试题总结分享给初学者&#xff0c;俗称八股文&#xff0c;期待对新手有所帮助。 窗口函数题 窗口函数其实就是根据当前数据, 计算其在所在的组中的统计数据。…

计算机毕业设计 基于SpringBoot的4S店车辆管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

Latex中使用package:authblk定义作者署名和单位

latex 一般情况下要自定义作者环境&#xff0c;因为自带的环境效果特别差&#xff0c; 所需的宏包一般使用 authblk。 文档说明网址&#xff1a; http://mirror.lzu.edu.cn/CTAN/macros/latex/contrib/preprint/authblk.pdf 非常简单明了&#xff0c;使用 \thanks 定义通讯作…

Python:Django框架的Hello wrold示例

Django是Python的目前很常用的web框架&#xff0c;遵循MVC设计模式。 以下介绍如何安装Django框架&#xff0c;并生成最简单的项目&#xff0c;输出Hello world。(开发工具VScode) 一、安装Django 在VScode终端控制台执行以下指令安装Django python install django 如果要查…