美文网首页
Hive实践练习

Hive实践练习

作者: ForgetThatNight | 来源:发表于2018-04-21 12:24 被阅读101次

创建表

create table t_access_times(username string,month string,salary int)
row format delimited fields terminated by ',';

查看刚刚创建的表

desc formatted t_access_times;
QQ截图20180421114239.png

造测试数据

A,2015-01,5
A,2015-01,15
B,2015-01,5
A,2015-01,8
B,2015-01,25
A,2015-01,5
A,2015-02,4
A,2015-02,6
B,2015-02,10
B,2015-02,5

加载测试数据

//overvrite table是覆盖数据 into table是插入数据 数据会导入到指定目录上图红色框内, 
//select * from t_access_times;查看加载的测试数据
load data local inpath '/home/hadoop/t_access_times.dat' into table t_access_times;

由于是内部表上图红色路径中的元数据在drop表的同时也会被清除

dfs -ls /user/hive/warehouse/t_access_times;
dfs -cat /user/hive/warehouse/t_access_times/t_access_times.dat;

第一步,先求个用户的月总金额

select username,month,sum(salary) as salary from t_access_times group by username,month

+-----------+----------+---------+--+
| username  |  month   | salary  |
+-----------+----------+---------+--+
| A         | 2015-01  | 33      |
| A         | 2015-02  | 10      |
| B         | 2015-01  | 30      |
| B         | 2015-02  | 15      |
+-----------+----------+---------+--+

第二步,将月总金额表 自己连接 自己连接

+-------------+----------+-----------+-------------+----------+-----------+--+
| a.username  | a.month  | a.salary  | b.username  | b.month  | b.salary  |
+-------------+----------+-----------+-------------+----------+-----------+--+
| A           | 2015-01  | 33        | A           | 2015-01  | 33        |
| A           | 2015-01  | 33        | A           | 2015-02  | 10        |
| A           | 2015-02  | 10        | A           | 2015-01  | 33        |
| A           | 2015-02  | 10        | A           | 2015-02  | 10        |
| B           | 2015-01  | 30        | B           | 2015-01  | 30        |
| B           | 2015-01  | 30        | B           | 2015-02  | 15        |
| B           | 2015-02  | 15        | B           | 2015-01  | 30        |
| B           | 2015-02  | 15        | B           | 2015-02  | 15        |
+-------------+----------+-----------+-------------+----------+-----------+--+

第三步,从上一步的结果中进行分组查询,分组的字段是a.username a.month

求月累计值: 将b.month <= a.month的所有b.salary求和即可
select A.username,A.month,max(A.salary) as salary,sum(B.salary) as accumulate
from 
(select username,month,sum(salary) as salary from t_access_times group by username,month) A 
inner join 
(select username,month,sum(salary) as salary from t_access_times group by username,month) B
on
A.username=B.username
where B.month <= A.month
group by A.username,A.month
order by A.username,A.month;

+-----------+----------+---------+--+
| username  |  month   | salary  |
+-----------+----------+---------+--+
| A         | 2015-01  | 33      |  33
| A         | 2015-02  | 10      |  43
| B         | 2015-01  | 30      |  30 
| B         | 2015-02  | 15      |  45
+-----------+----------+---------+--+

其他练习

https://blog.csdn.net/forgetthatnight/article/details/79632364#t32
目录:(四)Hive的基本操作--DDL操作
篇幅太长了,所以测试数据放在这

student.txt
95001,李勇,男,20,CS
95002,刘晨,女,19,IS
95003,王敏,女,22,MA
95004,张立,男,19,IS
95005,刘刚,男,18,MA
95006,孙庆,男,23,CS
95007,易思玲,女,19,MA
95008,李娜,女,18,CS
95009,梦圆圆,女,18,MA
95010,孔小涛,男,19,CS
95011,包小柏,男,18,MA
95012,孙花,女,20,CS
95013,冯伟,男,21,CS
95014,王小丽,女,19,CS
95015,王君,男,18,MA
95016,钱国,男,21,MA
95017,王风娟,女,18,IS
95018,王一,女,19,IS
95019,邢小丽,女,19,IS
95020,赵钱,男,21,IS
95021,周二,男,17,MA
95022,郑明,男,20,MA

相关文章

  • Hive实践练习

    创建表 查看刚刚创建的表 造测试数据 加载测试数据 由于是内部表上图红色路径中的元数据在drop表的同时也会被清除...

  • Hive 调优总结,让 Hive 调优想法不再碎片化

    通过阅读比较多的 Hive 调优材料,并根据自己的实践,总结 Hive 调优如下,让 Hive 调优想法不再凌乱、...

  • 2018-08-05--08-11

    08-05配置1、sql语句练习。根据月乔的文档&sql优化,根据文档练习2、hive语句1)hive,sql连接...

  • Hive练习

    数据: 建表语句 1、输出的日期格式不一样,需进行格式化 2、计算每个用户的小计 计算累加列,开窗函数根据用户id...

  • hive学习(三):练习题——collect_set及array

    前言: 以sql为基础,利用题目进行hive的语句练习,逐步体会sql与hive的不同之处。 题目用到hive的集...

  • hive学习(二):练习题——求访问次数

    前言: 以sql为基础,利用题目进行hive的语句练习,逐步体会sql与hive的不同之处。本次练习题来源:htt...

  • hiveserver2-CDH版本客户端使用

    一、简介 学习和实践Hive中,使用的都是CLI或者hive –e的方式,该方式仅允许使用HiveQL执行查询、更...

  • Hive2:Hive SQL实践

    hive建表语句: 1.建内部表 hive (badou)> create table udata(userid ...

  • hbase+hive应用场景

    一.Hive应用场景本文主要讲述使用 Hive 的实践,业务不是关键,简要介绍业务场景,本次的任务是对搜索日志数据...

  • [hive]视图~Kylin实践之使用

    Kylin实践之使用Hive视图 - Hello World - 博客频道 - CSDN.NEThttp://bl...

网友评论

      本文标题:Hive实践练习

      本文链接:https://www.haomeiwen.com/subject/ettikftx.html