hive实现手机上网流量和美国ncdc1991年到1992的各年的最高气温统计

本文主要是介绍hive实现手机上网流量和美国ncdc1991年到1992的各年的最高气温统计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 一、手机上网流量统计

学了这么长的hive的最近打算统计一些hadoop权威指南的一个案例之前使用hadoop的MapReduce写的可以说是很难受了,现在用hive实现一遍,首先我们先实现一个简单的手机上网流量统计,如下是我们的数据是一个5万行的纯文本信息

 1,这里是用外机的notepad++打开的,我们使用xftp软件直接考到虚拟机的had用户目录下flowrec.txt

 2,进入hive里:

    我们先来分析:我们一共要建一个有5个字段的表,分别是 nid,ntime,phone,up(上传流量使用),down(下载流量使用),每个字段的以\t分隔,每行以\n分隔,里面没有复杂类型所以不需要对复杂类型切割,那么我们开始建表加数据了

 3,建表加数据

建表
create table mobile_c(
nid int,
ntime string,
phone string,
up int,
down int
)
row format delimited
fields terminated by "\t"
lines terminated by "\n"
stored as textfile;填数据
load data local inpath '/home/had/flowrec.txt' into table mobile;

4,当然就是写sql了

首先我们统计手机上网流量肯定要以手机号分组,然后对每个手机号的长传流量和下载流量进行求和就完事了,如果想看看那个手机号用的下载流量或者上传流量多可以进行排序1,select phone,sum(up) as up,sum(down) as down from mobile_c group by phone;2,select phone,sum(up) as up,sum(down) as down from mobile_c group by phone order by down或者up;

我这里是没有排序的结果(是不是很简单啊):

phone    up    down
13800138000    641903    51316183
13900139000    641351    51851138
14501006577    644965    51528781
17700234987    638369    51322483
18900234567    630317    50032125
 

2,美国气温统计最高气温

这个可以说不说很难,但这个数据看着就是很头大,因为他每行字段只有一个,而且我们还要寻找一些有价值的信息就很耽误时间了,尽管他只有几千行数据

 1,讨论一些怎么建表,我们要建立一个表中的字段只有一个,字段的分隔符就没有或者说指定一个当前字段没有的分隔符以免他切割有误,行的话还是\t,但我们需要在每个字段中找少年份和对应的气温,还有空气指标,在这里我就直接把他们的位置说出来,要是不信的话同志们也可以在上面图片一个个数,年份是在每个字段的16的位置,月份是20,天在22,气温在88的位置,空气指标在93的位置

2,建表加数据

建表:
create table ncdc(
data string
)
row format delimited
fields terminated by "\t"
lines terminated by "\n"加数据:
load data local inpath '/home/had/*.gz' into table ncdc;
hive他内部的文件编码器会自动识别,我们这里只gz文件

3,写sql语句

1,首先我们需要的信息都在一个字段中,所有我们采用hive内置的substr()函数来切割这个字段的数据,刚才我们已经说了我们所需要的数据 现在先将数据查询出来:
select substr(data,16,4) as year,substr(data,20,2) as month,substr(data,22,2) as day,substr(data,88,5),substr(data,93,1)from ncdc limit 100;
结果我就显示10行year	month	day	_c3	_c4
1901	01	01	-0078	1
1901	01	01	-0072	1
1901	01	01	-0094	1
1901	01	02	-0061	1
1901	01	02	-0056	1
1901	01	02	-0028	1
1901	01	03	-0067	1
1901	01	03	-0033	1
1901	01	03	-0028	1
1901	01	04	-0033	12,我们可以发现,他每天统计上次气温,应该是早中晚,但这个天气是不是看着不舒服,就是使用cast函数来转换类型
select substr(data,16,4) as year,substr(data,20,2) as month,substr(data,22,2) as day,cast(substr(data,88,5),int),substr(data,93,1)from ncdc limit 100;
year	month	day	_c3	_c4
1901	01	01	-78	1
1901	01	01	-72	1
1901	01	01	-94	1
1901	01	02	-61	1
1901	01	02	-56	1
1901	01	02	-28	1
1901	01	03	-67	1
1901	01	03	-33	1
1901	01	03	-28	1
1901	01	04	-33	1
这样是不是就清晰多了
3,但是在机器上有的数据是9999意味着他的气候不可定,所以我们索性把他去掉于是我们进一步修改我们的代码
select substr(data,16,4) as year,substr(data,20,2) as month,substr(data,22,2) as day,cast(substr(data,88,5)as int),substr(data,93,1)from ncdc where cast(substr(data,88,5) as int)!=9999 limit 100;
具体数据前10条还是原来的记录,但9999数据已经抹去,只是在这里不能体现而已
4,还有空气指标假如官方规定必须是01459,这个对于大家应该没什么难度我们可以使用in过滤也可以使用rlike函数进行正则表达式来过滤到最后面我会体现给大家
5,现在我们就开始最后的统计最高气温了只需要用年份来分组获取最大气温即可这里我们使用的是嵌套子查询
所有就直接省略掉月和天了
select a.year ,max(a.qw) from (select substr(data,16,4) year,cast(substr(data,88,5) as int) qw,substr(data,93,1) from ncdc  where cast(substr(data,88,5) as int)!=9999  and substr(data,93,1) rlike '[01459]' ) a group by a.year;
结果:
a.year	_c1
1902	244
1901	317
我们就成功的统计出来了

 

 

这篇关于hive实现手机上网流量和美国ncdc1991年到1992的各年的最高气温统计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/670205

相关文章

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

如何在 Spring Boot 中实现 FreeMarker 模板

《如何在SpringBoot中实现FreeMarker模板》FreeMarker是一种功能强大、轻量级的模板引擎,用于在Java应用中生成动态文本输出(如HTML、XML、邮件内容等),本文... 目录什么是 FreeMarker 模板?在 Spring Boot 中实现 FreeMarker 模板1. 环

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll

Spring Security自定义身份认证的实现方法

《SpringSecurity自定义身份认证的实现方法》:本文主要介绍SpringSecurity自定义身份认证的实现方法,下面对SpringSecurity的这三种自定义身份认证进行详细讲解,... 目录1.内存身份认证(1)创建配置类(2)验证内存身份认证2.JDBC身份认证(1)数据准备 (2)配置依