任务15:使用Hive进行全国气象数据分析

任务描述

知识点

  • 使用Hive进行数据分析

重  点

  • 掌握Hive基本语句
  • 熟练使用Hive对天气数据进行分析

内  容

  • 使用Hive创建外部表
  • 使用Hive对数据进行统计分析

任务指导

1. 使用Hive创建基础表

  • 将China_stn_city.csv文件上传到HDFS的/china_stn目录中
  • 启动metastore(后台运行)
  • 进入Hive命令行模式,创建Hive数据库(china_all)
  • 创建Hive外部表:china_all,并加载HDFS上/china_all的数据

  • 创建基站与城市对应关系表:stn_city

  • 创建天气数据与各城市的对应表

  • 创建2022年天气数据表:tmp_city_2022,基于tmp_city获取2022年全年的天气数据,并将数据插入到tmp_city_2022表中

2. 使用Hive分析数据(可视化数据支持)

1)统计2022年每个月各省份的平均气温及平均风速

  • 创建china_map表,表字段包含:月份,省份,平均气温,平均风速
  • 统计2022年每个月各省份的平均气温及平均风速,由于气温与风速数据中存在缺失值"-9999",所以统计平均气温和平均风速时只统计不等于(<>)"-9999"的数据

2)统计2022年每个月平均降水量TOP10的城市

  • 创建city_precipitation_top10表,表字段包含:月份,城市,平均降水量(6小时)
  • 统计2022年每个月平均降水量TOP10的城市。本次查询通过两次子查询进行统计,通过第一次子查询获取2022年每个月各个城市的平均降水量(原数据中关于降水量的有两个字段“precipitation_1 string”和“precipitation_6 string”,分别为1小时内的降水量与6小时内的降水量,此时我们统计各城市平均6小时内的降水量),基于第一次子查询所得的结果,使用row_number()函数对各城市的平均降水量进行排名,进行第二次子查询,通过两次子查询分别获取到平均降水量以及排名,最后使用最外层查询根据排名取得前十的城市

3)统计2022年每个月各个城市的平均气温

  • 创建city_temp表,表字段包含:月份,城市,平均气温
  • 统计2022年每个月各个城市的平均气温

4)统计2022年每个月各个省份的平均气温

  • 创建province_temp表,表字段包含:省份,月份,平均气温,(预留) 预测气温
  • 统计2022年每个月各个省份的平均气温。表中的forecast字段作为预留的气温预测字段,用于写入后面的气温预测数据,当前该字段填入"0"

5)统计2022年每个月各省份的平均气压

  • 创建province_pressure表,表字段包含:月份,省份,平均气压
  • 统计2022年每个月各省份的平均气压

3. 使用Hive分析数据(气温预测数据支持)

在后续任务中会使用时间序列模型分别山东省以及全国各省份的气温进行预测,所以需要使用2000-2022年各个省份每个月的平均气温作为训练数据

  • 创建2000-2022年各省份平均气温表province_temp_all,表字段包含:年份,省份,月份,平均气温
  • 统计2000-2022年各省份每月的平均气温

任务实现

1. 使用Hive创建基础表

  • 进入/home/data目录,将China_stn_city.csv文件上传到HDFS中,该文件中存储了各基站与省份、城市的对应关系

数据说明:

基站编号

省份

城市

纬度

经度

58015

安徽

砀山

34.27

116.2

  • 在HDFS创建/china_stn目录,并将/home/data/China_stn_city.csv文件上传到/china_stn目录中
# hadoop fs -mkdir /china_stn
# hadoop fs -put /home/data/China_stn_city.csv /china_stn
  • 启动metastore(后台运行)
# hive --service metastore &
  • 输入【hive】命令进入Hive命令行模式,创建Hive数据库
hive> create database china_all;
hive> use china_all;
  • 创建Hive外部表:china_all,并加载HDFS上/china_all的数据
hive> create external table china_all.china_all(
stn string,
year string,
month string,
day string,
hour string,
temp string,
dew_point_temp string,
pressure string,
wind_direction string,
wind_speed string,
clouds string,
precipitation_1 string,
precipitation_6 string
)
row format delimited
fields terminated by ',' stored as textfile location '/china_all';
  • 检验china_all表是否存在数据
hive> select * from china_all limit 10;

  • 创建基站与城市对应关系表:stn_city
hive> create external table china_all.stn_city(
stn string,
province string,
city string,
latitude string,
longitude string
)
row format delimited
fields terminated by ',' stored as textfile location '/china_stn';
  • 检验stn_city是否存在数据
hive> select * from stn_city limit 10;

  • 创建天气数据与各城市的对应表
hive> create table china_all.tmp_city(
stn string,
year string,
month string,
day string,
hour string,
temp string,
dew_point_temp string,
pressure string,
wind_direction string,
wind_speed string,
clouds string,
precipitation_1 string,
precipitation_6 string,
province string,
city string
)
row format delimited
fields terminated by ',' stored as textfile;
  • 通过stn字段将china_all表与stn_city表进行表连接,使得每条天气数据找到对应的省份和城市信息,并将其全部插入到tmp_city表中,由于在原数据中有部分基站无法与省份进行匹配,从而产生null值,所以需要使用where判断去除null值
hive> insert overwrite table tmp_city 
select c2.*,sc.province,sc.city from china_all as c2 left join stn_city as sc on c2.stn = sc.stn where sc.province is not null and sc.city is not null;
  • 检验tmp_city表是否存在数据
hive> select * from tmp_city limit 10;

  • 创建2022年天气数据表:tmp_city_2022,基于tmp_city获取2022年全年的天气数据,并将数据插入到tmp_city_2022表中
hive> create table china_all.tmp_city_2022 as
select * from tmp_city where year = 2022;
  • 检验tmp_city_2022表是否存在数据
hive> select * from tmp_city_2022 limit 10;

2. 使用Hive分析数据(可视化数据支持)

1)统计2022年每个月各省份的平均气温及平均风速

  • 创建china_map表,表字段包含:月份,省份,平均气温,平均风速
hive> create table china_map(
month string,
province string,
temp string,
wind_speed string
)
row format delimited
fields terminated by ',' stored as textfile;
  • 统计2022年每个月各省份的平均气温及平均风速,由于气温与风速数据中存在缺失值"-9999",所以统计平均气温和平均风速时只统计不等于(<>)"-9999"的数据
hive> insert overwrite table china_map select month,province,avg(temp),avg(wind_speed) from tmp_city_2022 where temp <> '-9999' and wind_speed <> '-9999' group by month,province;
  • 查看china_map表(共408条数据)
hive> select * from china_map;

2)统计2022年每个月平均降水量TOP10的城市

  • 创建city_precipitation_top10表,表字段包含:月份,城市,平均降水量(6小时)
hive> create table city_precipitation_top10(
month string,
city string,
precipitation_6 string
)
row format delimited
fields terminated by ',' stored as textfile;
  • 统计2022年每个月平均降水量TOP10的城市。本次查询通过两次子查询进行统计,通过第一次子查询获取2022年每个月各个城市的平均降水量(原数据中关于降水量的有两个字段“precipitation_1 string”和“precipitation_6 string”,分别为1小时内的降水量与6小时内的降水量,此时我们统计各城市平均6小时内的降水量),基于第一次子查询所得的结果,使用row_number()函数对各城市的平均降水量进行排名,进行第二次子查询,通过两次子查询分别获取到平均降水量以及排名,最后使用最外层查询根据排名取得前十的城市
hive> insert overwrite table city_precipitation_top10
select t2.month,t2.city,t2.pre6 from 
(select *,row_number() over(partition by t1.month order by t1.pre6 desc) as number from
(select month,city,avg(precipitation_6) as pre6 from tmp_city_2022 where precipitation_6<>-9999 and precipitation_6>=0 group by month,city order by month,pre6 desc) as t1)as t2 where t2.number<=10;
  • 查看city_precipitation_top10表(共120条数据)
hive> select * from city_precipitation_top10;

3)统计2022年每个月各个城市的平均气温

  • 创建city_temp表,表字段包含:月份,城市,平均气温
hive> create table city_temp(
month string,
city string,
temp string
)
row format delimited
fields terminated by ',' stored as textfile;
  • 统计2022年每个月各个城市的平均气温
hive> insert overwrite table city_temp
select month,city,avg(temp) as tmp from tmp_city_2022 where temp<>-9999 group by month,city;
  • 查看city_temp表(共3969条数据)
hive> select * from city_temp limit 30;

4)统计2022年每个月各个省份的平均气温

  • 创建province_temp表,表字段包含:省份,月份,平均气温,(预留) 预测气温
hive> create table province_temp(
province string,
month string,
temp string,
forecast string
)
row format delimited
fields terminated by ',' stored as textfile;
  • 统计2022年每个月各个省份的平均气温。表中的forecast字段作为预留的气温预测字段,用于写入后面的气温预测数据,当前该字段填入"0"
hive> insert overwrite table province_temp
select province,month,avg(temp),'0' from tmp_city_2022 where temp<>-9999 group by province,month order by province,month;
  • 查看province_temp表(共408条数据)
hive> select * from province_temp;

5)统计2022年每个月各省份的平均气压

  • 创建province_pressure表,表字段包含:月份,省份,平均气压
hive> create table province_pressure(
month string,
province string,
pressure string
)
row format delimited
fields terminated by ',' stored as textfile;
  • 统计2022年每个月各省份的平均气压
hive> insert overwrite table province_pressure
select month,province,avg(pressure) as pressure from tmp_city_2022 where pressure<>-9999 group by month,province;
  • 查看province_pressure表(共398条数据)
hive> select * from province_pressure;

3. 使用Hive分析数据(气温预测数据支持)

在后续任务中会使用时间序列模型分别山东省以及全国各省份的气温进行预测,所以需要使用2000-2022年各个省份每个月的平均气温作为训练数据

  • 创建2000-2022年各省份平均气温表province_temp_all,表字段包含:年份,省份,月份,平均气温
hive> create table province_temp_all(
year string,
province string,
month string,
temp string
)
row format delimited
fields terminated by ',' stored as textfile;
  • 统计2000-2022年各省份每月的平均气温
hive> insert overwrite table province_temp_all
select year,province,month,avg(temp) from tmp_city where temp<>-9999 group by year,province,month order by year,province,month;
  • 查看province_temp_all表(共9385条数据)
hive> select * from province_temp_all limit 30;

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

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

相关文章

统计学之常见的分布介绍

统计学中常见的分布有&#xff1a; 1. 正态分布&#xff08;Normal Distribution&#xff09;&#xff1a;也称为高斯分布&#xff0c;是最常见的分布之一&#xff0c;具有钟形曲线&#xff0c;对称且均值和标准差可以完全描述该分布。 2. 二项分布&#xff08;Binomial Dist…

Unity3D学习之数据持久化——PlayerPrefs

文章目录 1. 概念2. 存储2.1 存到内存当中2.2 存到硬盘当中2.3 局限性2.4 相同键会覆盖 3.读取3.1 int型3.2 float型3.3 string型3.4 判断数据是否存在 4. 删除数据5. 存储位置6. 反射6.1 判断一个类型的对象是否可以让另一个类型为自己分配空间6.2 通过反射获得泛型类型 7 数据…

spring boot 同一方法中如何使用多数据源

1、我使用的是mybatis-plus&#xff0c;思路是重写mp的Iservice借口的方法&#xff0c;比如list、insert、update这些方法 2、以list方法为例&#xff0c;这里我重写了list方法&#xff0c;然后在list方法增加DataSource注解&#xff0c;这样就可以了。 Service public class …

斯坦福 Stats60:21 世纪的统计学:第十五章到第十八章

第十五章&#xff1a;比较均值 原文&#xff1a;statsthinking21.github.io/statsthinking21-core-site/comparing-means.html 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 我们已经遇到了许多情况&#xff0c;我们想要询问样本均值的问题。在本章中&#xff0c;我们…

Keepalived 双机热备

本章主要内容&#xff1a; Keepalived 双机热备基础知识学会构建双机热备系统学会构建LVSHA 高可用群集 简介 在这个高度信息化的IT时代&#xff0c;企业的生产系统&#xff0c;业务运营&#xff0c;销售和支持&#xff0c;以及日常管理等环节越来越依赖于计算机和服务&#…

[GN] 使用vue3+vite+ts+prettier+eslint

学习目标&#xff1a; 做到代码格式等统一&#xff0c;此时&#xff0c;esint和prettier就要登场了。 学习内容&#xff1a; eslint是代码检测工具&#xff0c;可以检测出你代码中潜在的问题&#xff0c;比如使用了某个变量却忘记了定义。 prettier是代码格式化工具&#xff…

Shape-IoU——综合考量边框形状与尺度的度量

今天看到一篇文章主要是提出了一种更有效的IOU度量方法&#xff0c;论文地址在这里&#xff0c;如下所示&#xff1a; 摘要 边界盒回归损失作为检测器定位分支的重要组成部分&#xff0c;在目标检测任务中起着重要作用。现有的边界框回归方法通常考虑GT框和预测框之间的几何关…

AS,android SDK

android sdk中包含什么&#xff1f; Android平台工具&#xff08;Android Platform Tools&#xff09;&#xff1a; 这包括 adb&#xff08;Android Debug Bridge&#xff09;等工具&#xff0c;用于在计算机和 Android 设备之间进行通信、调试和数据传输。 Android命令行工具…

【ES6 Map数据结构】建议日常开发操作数组时使用 new Map

Map数据结构 new Map使用属性及方法:1. size属性2. set(key,value)3. get(key)4. has(key)5. delete(key)6. clear()7. 遍历方法&#xff1a; keys()、values()、entries()、forEach()(1). keys()(2). values()(3). entries()(4). forEach() 8. toString()9. valueOf 算法使用 …

使用ffmpeg进行视频截取

1 原始视频信息 通过ffmpeg -i命令查看视频基本信息 ffmpeg version 6.1-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developersbuilt with gcc 12.2.0 (Rev10, Built by MSYS2 project)configuration: --enable-gpl --enable-version3 --enable-sta…

SqlAlchemy使用教程(四) MetaData 与 SQL Express Language 的使用

四、Database MetaData 与 SQL Express Language 的使用 MetaData对象用于描述表结构&#xff0c;SQL Express Language是DBAPI SQL的统一封装器。MetaData 与SQL Express 语句可以在Core层使用&#xff0c;ORM层基于MetaData, SQL Express基础上做了进一步抽象。本章将介绍在…

Python简单ORM实现:不使用元类的灵活数据操作与查询构建【第29篇—python:ORM】

文章目录 不使用元类的简单ORM实现Field类Compare类Model类Query类示例使用扩展查询功能支持 LIMIT 和 OFFSET支持 GROUP BY 和 HAVING 示例用法总结 不使用元类的简单ORM实现 在 Python 中&#xff0c;ORM&#xff08;Object-Relational Mapping&#xff09;是一种将对象和数…

GBASE南大通用CommandBuilder 属性

DataAdapter 属性 获取或设置一个用于自动生成 SQL 语句的GBASE南大通用DataAdapter 对象。  语法 [Visual Basic] Public Property DataAdapter As GBASE南大通用DataAdapter Get Set [C#] public GBaseDataAdapter DataAdapter { get; set; }  属性 一个 GBase…

244.【2023年华为OD机试真题(C卷)】密码解密(JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目二.解题思路三.题解代码Python题解代码JAVA题解…

基于uniapp的在线课程教学系统

介绍 项目背景&#xff1a; 随着互联网的快速发展&#xff0c;在线教育已经成为一种流行的学习方式。针对这一趋势&#xff0c;我们决定开发一个基于UniApp的在线课程教学系统。该系统旨在为学生提供方便快捷的在线学习体验&#xff0c;同时也为教师提供一个高效管理课程的平台…

Vue3实现带点击外部关闭对应弹出框(可共用一个变量)

首先&#xff0c;假设您在单文件组件(SFC)中使用了Vue3&#xff0c;并且有两个div元素分别通过v-if和v-else来切换显示一个带有.elpopver类的弹出组件。在这种情况下&#xff0c;每个弹出组件应当拥有独立的状态管理&#xff08;例如&#xff1a;各自的isOpen变量&#xff09;。…

QFile:文件的打开与关闭

QFile file("注释.txt");if(file.open(QIODevice::WriteOnly)){qDebug()<<"打开成功";}else{qDebug()<<"打开失败";}if(file.open(QIODevice::WriteOnly)){qDebug()<<"打开成功";}else{qDebug()<<"打开失…

《计算机视觉处理设计开发工程师》

计算机视觉&#xff08;Computer Vision&#xff09;是一门研究如何让计算机能够理解和分析数字图像或视频的学科。简单来说&#xff0c;计算机视觉的目标是让计算机能够像人类一样对视觉信息进行处理和理解。为实现这个目标&#xff0c;计算机视觉结合了图像处理、机器学习、模…

做品牌,怎么挖掘用户深层需求?

品牌想要长久发展&#xff0c;就需要去挖掘用户深层需求&#xff0c;什么是用户深层需求&#xff0c;比如做美业的认为用户想要变美是深层次的需求&#xff0c;但其实由美貌带来的附加利益比如说更上镜、竞争优势更大等才属于深层需求&#xff0c;今天媒介盒子就来和大家聊聊&a…

compose 实验

cd /opt mkdir compose_nginx cd compose_nginx mkdir nginx cd nginx/ 此时顺便将nginx安装包拖进来 vim Dockerfile mkdir /opt/compose_nginx/wwwroot echo "<h1>this is test web</h1>" > /opt/compose_nginx/wwwroot/index.html docker netw…