HQL数据查询
数据查询是hive最主要的功能
查询语法
select..from语句
基本和mysql的操作差不多
select col1,col2 from table;
select col1 c1,col2 c2 from table;
select l.name,r.cousrse from (select id,name from student) l join (select id,course from student_info) r on l.id=r.id;
select * from student limit 100;
如果需要在select语句中根据某列的值进行相应的处理,hive支持在select语句中使用
case...when...then
select id,enname,sex,
case
when sex='M' then '男'
when sex='M' then '男'
else '无性'
end
from student;
where 语句
对查询条件进行限制,就需要使用where语句,
select * from student where age=18;
//也可使用or和and 连接过多个谓词表达式//
select * from student where age=18 and sex='F';
其他的谓词使用都和mysql的使用差不多。
### group by语句和having语句
group by 通常会和聚合函数一起使用,先按照一个列或多个列对结果进行分组再执行聚合,
select couint(*) from student group by age;
select avg(age) from student group by c_id; //这里查询的字段没有出现在group by后边就必须使用avg()这些聚合函数//
//如果想对分组结果进行条件过滤,可以使用having子句//
select c_id,avg(age) from student where sex='F' group by c_id having avg(age)>18;
join语句
hive支持一般的join语句,但目前只支持等值连接。
1.inner join
默认采用的方式
select t1.id,t2.id from student t1 join student_info t2 on t1.id=t2.id;
2. left/right outer join
左右外连接
select t1.id,t2.id from student t1 left outer join student_info t2 on t1.id=t2.id;
3. full outer join
全外表连接
select t1.id,t2.id from student t1 full outer join student_info t2 on t1.id=t2.id;
4. left-semi join
```
左半连接是hive特有的语法,会返回左表的记录,前提是记录对于游标满足on中的判定条件。左半连接被用来代替标准sql中in的操作,
select t1.id from student t1 left semi join student_info t2 on t1.id=t2.id;
找出student_info中存在的表1的记录,不能像使用标准的sql一样通过in来完成
select t1.id from student t1 where t1.id in (select t2.id from student_info t2);//错误的语法//
这样可以使用内连接得到同样的结果,hive在有表中找到了匹配的记录,hive就会停止扫描。
```
5. map-side join
通过Mapreduce实现了join操作。不难发现,求笛卡尔积的操作时时在Reduce端完成的,这种连接
select t1.id t2.id from student t1 join student_info t2 on t1.id=t2.id;
6. 多表join
hive可以支持对多表进行join,如下:
select * from student t1 join student_info t2 on t1.id=t2.id join student_class t3 on t1.id=t3.id;
hive会为每一个join操作启动一个作业,第一个作业完成表1和表2的连接操作,第二个作业完成第一个作业的输出和表3的连接操作,以此类推。这个应该是在多次Mapreduce中是非常有用的。
### ORDER BY和SORTBY语句
hive中的ORDER BY和sql中的order by的语义是一样的,执行全局的排序,这就必须有一个Reduce来完成,否则无法达到全局排序的要求。
select * from student order by c_id desc,age asc; //在排序时候还可以用desc和asc关键字指定排序方式//
hive还有一种排序方式,这种排序防护只会在Reducer中进行一个局部排序,也就是sortby
select * from student sort by c_id desc,age asc;
order by和sort by在hive中排序结构方式结构完全一样,当Reducer的个数只有一个时,两种结果完全相同,当Reducer的个数不止一个时,sort by的输出就可能会有重合,如表student中的id列为:
1,7,3,9,2,12
其中order by id 的结果为:
1
2
3
7
9
12
Reducer的数目为2时候,sort by id的结果为
1
7
12
2
3
9
其中前3行数据由第一个Reducer输出,后3行数据由第二个Reducer输出。
DISTRIBUTE BY语句
hive可以通过distribute by控制map的输出在reducer中是如何划分的,也就是等同于Mapreducer中的Partitioner,通过分区可以使得数据进入同一个Reducer,我们操作一下
select col1,col2 from student distribute by col1 sort by col1,col2; //distribute by保证了col1相同的数据一定进入同一个Reducer,在Reducer中再按照col1,col2的顺序达到要求,这样就和上边只有一个reducer达到的效果是一样的//
```
CLUSTER BY
这个只是在 DISTRIBUTE BY和SORT BY中的列完全相同时候可以用cluster by替代
分桶和抽样
这个没有理清
UNION ALL
hive中对于unonall的使用时非常常见的,主要用于多表合并的场景,union all要求各表select出的字段类型必须完全匹配。hive是不支持union all的,所有必须进行嵌套查询
select s.id,s.age
from(select si.cid,si.age from student_info si union all select si1.cid,si1.age from student_info si1) s;
hive函数
hive内置函数很多,在数据查询中有时候会常常用到,可以通过以下命令查看
show functions;
标准函数
聚合函数
表生成函数
UDF自定义函数
分享到:
相关推荐
Hive学习必备——配置Hive环境教程 在这篇文章中,我们将详细介绍如何配置Hive环境,包括安装Hive、配置Hadoop环境、配置Hive Metastore数据库等步骤。同时,我们还将使用Xshell6工具来远程连接到Hive服务器,并...
【标题】:“基于Hadoop的数据仓库Hive学习指南” 【描述】:该文档是一份针对Hive的学习资料,旨在引导读者理解如何在Hadoop平台上利用Hive进行数据仓库操作和编程实践。它涵盖了Hive的基本概念、安装步骤、实验...
Hive学习总结及应用.pdf 本文档主要介绍了Hive的基本概念、应用场景、元数据存储方式、数据导入和导出方式等。下面是对文档中提到的知识点的详细解释: 一、Hive概述 Hive是一个构建在HDFS和Map/Reduce之上的可...
hive被大多数企业使用,学习它,利于自己掌握企业所使用的技术,这里从安装使用到概念、原理及如何使用遇到的问题,来讲解hive,希望对大家有所帮助。 此篇内容较多: 看完之后需要达到的目标 1.hive是什么 2.明白...
《王家林Hive学习资料》是一份详尽的教程,旨在帮助学员深入了解和掌握Hive这一数据仓库工具。Hive在企业Hadoop应用中扮演着核心角色,尤其在大规模离线数据分析方面表现卓越,被Facebook、淘宝等大型公司广泛采用。...
由于 Hive 采用了类似SQL 的查询语言 HQL(Hive Query Language),因此很容易将 Hive 理解为数据库。其实从结构上来看,Hive 和数据库除了拥有类似的查询语言,再无类似之处。本文将从多个方面来阐述 Hive ...
标题中提到的"Hive学习笔记-比较全的知识"和描述中所述"相当不错的,适合初学者,下载绝对不亏"意味着本篇文档旨在为初学者提供一个全面的学习指南,覆盖Hive的主要概念和操作。而标签"hive"确定了文档的中心主题是...
5. 使用 Hive 注意事项 涵盖字符集、压缩、COUNT(DISTINCT)、JOIN、DML 操作、HAVING、子查询、JOIN 中的 NULL 处理、分号字符等。 6. 优化 包括 Hadoop 计算框架的特性、常用优化手段、全排序、笛卡尔积、EXIST ...
hive hadoo MapReduce 介绍Hive。Hive入门,Hive学习笔记
hive学习资料-hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速...
Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive十分适合对数据仓库进行统计分析。 目录: Hive入门与实战.pdf hive函数...
### Hive学习笔记(更新版) #### 一、Hive简介 Hive 是一款构建于 Hadoop 之上的数据仓库工具,旨在提供一种简单易用的方法处理存储在 Hadoop 文件系统 (HDFS) 中的大量数据集。它允许用户使用类似于 SQL 的语言...
“Hive搭建使用笔记”可能包含了实践过程中的注意事项、常见问题及其解决方案,是学习过程中宝贵的参考资料。 通过这个压缩包,你可以全面掌握Hive的基础知识,包括安装、配置、表管理和SQL操作。实践是学习最好的...
Hive之所以被广泛使用,是因为它提供快速开发的能力,操作接口采用类SQL语法,避免了去写MapReduce,减少开发人员的学习成本。Hive与Hadoop有密切的关系,Hive是建立在Hadoop之上的,其架构与Hadoop非常类似。Hive的...
Hive学习必备经典 Hive是一种基于Hadoop的数据仓库工具,用于数据分析和报表生成。下面是对Hive的结构、架构、基本操作和数据存储的详细介绍。 Hive结构 Hive的结构主要包括三个部分:元数据库(Metastore)、...
Hive 学习笔记Hive
Hive 是一种基于 Hadoop 的数据仓库工具,它允许用户使用 SQL 类似的查询语言(HiveQL)来处理和分析存储在 Hadoop 分布式文件系统(HDFS)中的大规模数据集。...学习 Hive 需要结合实际场景和大量实践来加深理解。