学习笔记hive——hive应用——hive查询(代码片段)

别呀 别呀     2023-01-10     763

关键词:

五、Hive查询

5.1、创建职工信息表

任务实现:
1、创建表dept,emp和salgrade





2、导入数据
将数据emp.txt导入到表emp

#emp.txt
7369,SMITH,CLERK,7902,1980-12-17,800.00,,20
7499,ALLEN,SALESMAN,7698,1981-2-20,1600.00,300.00,30
7521,WARD,SALESMAN,7698,1981-2-22,1250.00,500.00,30
7566,JONES,MANAGER,7839,1981-4-2,2975.00,,20
7654,MARTIN,SALESMAN,7698,1981-9-28,1250.00,1400.00,30
7698,BLAKE,MANAGER,7839,1981-5-1,2850.00,,30
7782,CLARK,MANAGER,7839,1981-6-9,2450.00,,10
7839,KING,PRESIDENT,,1981-11-17,5000.00,,10
7844,TURNER,SALESMAN,7698,1981-9-8,1500.00,0.00,30
7900,JAMES,CLERK,7698,1981-12-3,950.00,,30
7902,FORD,ANALYST,7566,1981-12-3,3000.00,,20
7934,MILLER,CLERK,7782,1982-1-23,1300.00,,10

将数据dept.txt导入到表dept

#dept.txt
10,ACCOUNTING,NEW YORK
20,RESEARCH,DALLAS
30,SALES,CHICAGO
40,OPERATIONS,BOSTON

将数据salgrade.txt导入到表salgrade

#salgrade.txt
1,700,1200
2,1201,1400
3,1401,2000
4,2001,3000
5,3001,9999



5.2、查询入门

5.2.1、Select语法

SELECT  [ALL|DISTINCT]  字段列表(字段1 别名,....) 
FROM1 别名,2 别名, ....
WHERE 条件 ….
GROUP BY 分组字段  HAVING(组约束条件)
ORDER BY 排序字段1 Asc | Desc,  字段2 Asc|Desc, .....
[CLUSTER BY 字段 | [DISTRIBUTE BY字段] [SORT BY字段]]
LIMIT M,N;
DISTRIBUTE BY 相同字段值会分到一个分区
CLUSTER BY 相当于前两个

5.2.2、distinct去重查询

任务实现:
1.查询emp中所有的部门编号


2.查询emp中相同部门不同职位的部门职位信息

5.2.3、order by查询

任务实现:
1.将部门编号不为10的所有员工按员工编号升序排列


2.将所有员工先按部门编号升序,当部门一样时,再按姓名降序排

5.2.4、内置函数


任务实现:
1.查看emp表中平均薪水是多少并对其四舍五入保留两位小数显示

2.统计emp表中有多少个不重复部门



group by…having分组查询
group by按照其后的字段分组,可使用多个字段进行分组。通常配合having使用,having后面的条件是对组的约束。同时SELECT子句中的字段必须是分组中的字段或分组函数

任务实现: 查询emp表平均薪水大于2000的部门编号、平均薪水

任务实现:
1.统计获救与死亡情况

select survived,count(survived) from tidanic group by survived;

2.统计舱位分布情况

select pclass,count(pclass) from tidanic group by pclass;

3.统计港口登船人员分布情况

select embarked,count(embarked) from tidanic group by embarked;

5.3、select连接查询和子查询

5.3.1、join连接查询

任务实现: 查询emp表薪水大于2500的员工姓名及所在部门名称

left outer join:左边表的所有记录连接结果会被返回,右边表没有符合on条件的,连接的右边的列为Null
right outer join:右边表的所有记录连接结果会被返回,左边表没有符合on条件的,连接的左边的列为Null
full outer join:返回两个表所有的记录连接结果
left semi join:左半开边连接,只返回满足连接条件的左边记录,类似MySQL in
注意:On后面只支持=,优化的方式就是大表放在最后面去连接,因为前面的表会被缓存,只有最后一个会通过扫描的方式,left semi join:一旦满足条件就返回左边记录,不进行连接,类似于in。。。exists

5.3.2、子查询

任务实现:
1.在emp表中,工资最高的员工姓名、薪水

2.在emp表中,工资高于平均工资员工姓名、薪水


5.3.3、case…when…then查询

任务实现:
查询emp表中的员工姓名,薪水,如果薪水小于2000标记为low,如果薪水在2000和5000之间标记为middle,如果薪水大于5000标记为high

5.4、任务实现:分析影响生存率关系

1.统计各个性别存活数

select sex,count(*) as sexcount from tidanic where survived=1 group by sex

2.计算存活总数

select count(*) as allcount from tidanic where survived=1

3.统计性别与生存率的关系

select a.sex,a.sexcount/b.allcount as count from (select sex,count(*) as sexcount from tidanic where survived=1 group by sex) a join (select count(*) as allcount from tidanic where survived=1) b on 1=1;

同理:

4.统计客舱等级与生存率的关系

select a.pclass,a.sexcount/b.allcount as count from (select pclass,count(*) as sexcount from tidanic where survived=1 group by pclass) a join (select count(*) as allcount from tidanic where survived=1) b on 1=1;

5.统计登船港口与生存率的关系

select a.embarked,a.sexcount/b.allcount as count from (select embarked,count(*) as sexcount from tidanic where survived=1 group by embarked) a join (select count(*) as allcount from tidanic where survived=1) b on 1=1;

5.5、Hive语句执行顺序

任务实现
查询emp表平均薪水大于2000的部门编号、平均薪水并按照部门编号排序,不包括10部门

SELECT deptno,avg(sal) as avg_sal FROM emp WHERE deptno<>10 GROUP BY deptno HAVING avg(sal)>2000  ORDER BY deptno;

可以在执行HQL语句前加explain,可查看执行顺序

SQL执行顺序

FROM ... WHERE ... GROUP BY ... AVG SUM 等聚合函数 ... HAVING ... SELECT... ORDER BY ...

Hive执行顺序

FROM ... WHERE ... SELECT ... GROUP BY ... HAVING ... ORDER BY ...

Hive的执行顺序也是MapReduce的执行顺序
map阶段:

  • 执行from加载:进行表的查找与加载
  • 执行where过滤:进行条件过滤与筛选
  • 执行select查询:进行输出项的筛选
  • 执行group by分组:描述了分组后需要计算的函数
  • map端文件合并:map端本地溢出写文件的合并操作,每个map最终形成一个临时文件。 然后按列映射到对应的reduce阶段

reduce阶段:

  • group by:对map端发送过来的数据进行分组并进行计算。
  • Having:最后过滤列用于输出结果
  • order by:排序后进行结果输出到HDFS文件

hive学习笔记

摘要:  Hive 是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简... 查看详情

学习笔记hive——查询优化(代码片段)

一、视图1.1、Hive的视图视图是基于数据库的基本表进行创建的一种伪表,数据库中储存视图的定义,不存数据项,数据项仍然存在基本表中它可作为一个抽象层,将数据发布给下游用户。目前Hive版本支持逻辑视... 查看详情

学习笔记hive——hive开发应用(代码片段)

一、任务1.1、商品零售购物篮分析现代商品种类繁多,顾客往往会由于需要购买的商品众多而变得疲于选择,且顾客并不会因为商品选择丰富而选择购买更多的商品。繁杂的选购过程往往会给顾客疲惫的购物体验。1.2、... 查看详情

hive学习笔记——保存select结果,join,多重插入

1.保存select查询结果的几种方式:1、将查询结果保存到一张新的hive表中createtablet_tmpasselect*fromt_p;2、将查询结果保存到一张已经存在的hive表中(用load的时候,可以是into或者overwriteinto,这里是into或者overwrite)insertinto/overwritetablet_tmp... 查看详情

学习笔记hive——hive应用——数据库定义创建表(代码片段)

一、任务讲解泰坦尼克号乘客信息存储与分析泰坦尼克号乘客信息存储与分析:创建乘客信息表导入数据到表中统计获救与死亡情况统计舱位分布情况统计港口登船人数分布情况统计性别与生存率的关系统计客舱等级与生存... 查看详情

60分钟内从零起步驾驭hive实战学习笔记

 本博文的主要内容是:  1. Hive本质解析  2. Hive安装实战  3. 使用Hive操作搜索引擎数据实战   SparkSQL前身是Shark,Shark强烈依赖于Hive。Spark原来没有做SQL多维度数据查询工具,后来开发了Shark,Shark依... 查看详情

hive学习笔记

Hive学习笔记1、Hive安装(只在主节点上安装) (1)下载安装包到/usr/app/目录下 (2)解压 (3)修改配置文件/etc/profile(添加 exportHIVE_HOME=/usr/local/hive-0.9.0-bin exportHADOOP_HOME=/usr/local/hadoop-0.20.2-cdh3u 查看详情

hive学习笔记_hive的表创建

创建hive表注意事项一、表分隔符必须与读取的数据文件一致,比如例子的分隔符为 ‘ ‘(制表符),hive下默认分隔符是制表符。二、最好指定分区作为数据之间的区分。三、创建完表可以desc+表明进行查看,字段名称(fiel... 查看详情

hive编程指南_学习笔记01

第四章:HQl的数据定义1:创建数据库 createdatabasefinancials; createdatabase ifnotexistsfinancials;2:查看数据库 showdatabases;  模糊查询数据库 showdatabaseslike‘h.*‘;3:创建数据库改动数据库的默认位置 &nbs 查看详情

hive系统性学习笔记

1.基础1.1DDLHive分桶Bucket1.2DML1.3函数Hive如何实现自定义函数UDFHive日期相关函数Hive如何使用GroupingSets1.4服务Hive元数据服务MetaStore2.原理3.调优HiveCountDistinct优化HiveJoin优化之MapJoin4.实战Hive安装与配置在Zeppelin中如何使用Hive 查看详情

hive系统性学习笔记

1.基础1.1DDLHive分桶Bucket1.2DML1.3函数Hive如何实现自定义函数UDFHive日期相关函数Hive如何使用GroupingSets1.4服务Hive元数据服务MetaStore2.原理3.调优HiveCountDistinct优化HiveJoin优化之MapJoin4.实战Hive安装与配置在Zeppelin中如何使用Hive 查看详情

hive学习笔记——crud

1.首先需要安装Hadoop和HiveHadoop和Hive的own和grp都是HadoopHive的安装很简单,在清华镜像站下载Hive的二进制文件,然后解压到/usr/local目录下修改own和grp就行2.启动hive之前需要先启动Hadoop,启动后显示hive>  查看详情

hive学习笔记

1、背景介绍 什么是Hive?Hive是一个有FaceBook推出的开源的数据仓库,将结构化的数据文件映射为一张表,且提供SQL查询。数据仓库和数据库的区别    数据库(OLTP)    操作型处理,日常事务处理࿰... 查看详情

hive学习笔记(启动方式,内置服务)

一、Hive介绍  Hive是基于Hadoop的一个数据仓库,Hive能够将SQL语句转化为MapReduce任务进行运行。  Hive架构图分为以下四部分。     1、用户接口   Hive有三个用户接口:命令行接口(CLI):以命令行的形式输入SQL语... 查看详情

学习笔记hive——hive简介

一、Hive设计思想(了解)Facebook用户社交数据存储与处理Facebook是美国的一个社交网站,于2004年2月4日上线。主要创始人为美国人马克·扎克伯格。Facebook是世界排名领先的照片分享站点。根据Comscore咨询公司的数据显... 查看详情

学习笔记hive——hive简介

一、Hive设计思想(了解)Facebook用户社交数据存储与处理Facebook是美国的一个社交网站,于2004年2月4日上线。主要创始人为美国人马克·扎克伯格。Facebook是世界排名领先的照片分享站点。根据Comscore咨询公司的数据显... 查看详情

hive自定义函数的学习笔记

 前言:   hive本身提供了丰富的函数集,有普通函数(求平方sqrt),聚合函数(求和sum),以及表生成函数(explode,json_tuple)等等.但不是所有的业务需求都能涉及和覆盖到,因此hive提供了自定义函数的接口,方便用户扩展.   自己好像... 查看详情

hadoop-hive学习笔记

createtablehive_1(idstring,namestring,genderstring)rowformatdelimitedfieldsterminatedby‘,‘storedasTEXTFILE;loaddatalocalinpath‘/luozt/hive_001.txt‘intotablehive_1;createEXTERNALtablehive_2(idstring,na 查看详情