Hive如何实现查询
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章给大家分享的是有关Hive如何实现查询的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、查询官方演示案例:https://cwiki.apache.org/conf
千家信息网最后更新 2025年12月02日Hive如何实现查询
这篇文章给大家分享的是有关Hive如何实现查询的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
1、查询
官方演示案例:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Select
1.1 完整语法
SELECT [ALL | DISTINCT] 字段1,字段2,字段3...--all 是默认的 表是全部查出来,distinct 表示去重查询(可以精确某个列) FROM table_reference --从哪个表查 [WHERE where_condition] --过滤条件 [GROUP BY col_list] --以某某字段分组(可以有多个字段) [HAVING col_list] --给分组过后一些数据进行过滤 [ORDER BY col_list] --全局排序 [DISTRIBUTE BY col_list] [SORT BY col_list] --分区、及排序 [CLUSTER BY col_list] --分区排序 [LIMIT number] --限制输出的行数(翻页)
SQL执行顺序:from < join < where < group by < count(*) < having < select < order by < limit
1.2 、基本查询
1.2.1、算术运算符
1.2.1、比较运算符
1.2.1、逻辑运算符

1.3、分组
1.3.1、group by
GROUP BY语句通常会和聚合函数一起使用,按照一个或者多个列队结果进行分组,然后对每个组执行聚合操作。select t.deptno, t.job, max(t.sal) max_sal from emp t group by t.deptno, t.job;注意:在使用了group by后,select后面接的字段只能是group by后面有的。
1.3.2、having
--having与where不同点--(1)where后面不能写分组聚合函数,而having后面可以使用分组聚合函数。--(2)having只用于group by分组统计语句。select deptno, avg(sal) avg_sal from empgroup by deptnohaving avg_sal > 2000;
1.4、join on
1.4.1、内连接
--只有进行连接的两个表中都存在与连接条件相匹配的数据才会被保留下来select e.empno, e.ename, d.deptno from emp e (inner)join dept d on e.deptno = d.deptno;
1.4.2、左外连接
--JOIN操作符左边表中符合WHERE子句的所有记录将会被返回select e.*, d.dname, d.locfrom emp eleft join dept don e.deptno=d.deptno;
1.4.3、右外连接
--JOIN操作符右边表中符合WHERE子句的所有记录将会被返回select e.*, d.*from emp eright join dept don e.deptno=d.deptno
1.4.4、满外连接
--将会返回所有表中符合WHERE语句条件的所有记录--方式一:select e.*, d.*from dept dfull join emp eon d.deptno=e.deptno--方式二:select e.empno, e.ename, d.dnamefrom dept dleft join emp eon d.deptno=e.deptnounion allselect e.empno, e.ename, d.dnamefrom dept dright join emp eon d.deptno=e.deptno--union 竖向拼接两张表 可以将相同数据去重--union all 竖向拼接两张表 直接拼接不去重
1.5、排序
1.5.1、order by
--全局排序,只有一个Reducer--asc 升序 (默认)--desc 倒序select * from emporder by sal desc
1.5.2、sort by & distribute by
--distribute by (分区) and sort by(区内排序)按照部门编号分区,再按照员工编号降序排序。//设置reduce数量set mapreduce.job.reduces=3; --默认-1insert overwrite local directory '/opt/module/hive/datas/distribute-result'select * from emp distribute by deptno sort by empno desc;注意:--distribute by的分区规则是根据分区字段的hash码与reduce的个数进行模除后,余数相同的分-到一个区。--Hive要求DISTRIBUTE BY语句要写在SORT BY语句之前。
1.5.3、cluster by
--当distribute by和sort by字段相同时,可以使用cluster by方式select * from emp cluster by deptno;select * from emp distribute by deptno sort by deptno;注意:--cluster by除了具有distribute by的功能外还兼具sort by的功能。但是排序只能是升序排序,不能指定排序规则为ASC或者DESC
1.6、多维聚合
1.6.1、grouping sets
--group by a,b,c grouping sets((a,b),c)--相当于(group by a,b) union (group by c)select region,school,class,count(1)from schoolgroup by region,school,class grouping sets(region,school,class);+---------+---------+----------+------+| region | school | class | _c3 |+---------+---------+----------+------+| NULL | NULL | 三年一班 | 5 || NULL | NULL | 坦克一班 | 6 || NULL | NULL | 大数据一班 | 4 || NULL | NULL | 小学生一班 | 4 || NULL | NULL | 法师一班 | 4 || NULL | 宝安中学 | NULL | 4 || NULL | 王者峡谷 | NULL | 10 || NULL | 黄田小学 | NULL | 4 || NULL | 龙华小学 | NULL | 5 || 宝安区 | NULL | NULL | 8 || 王者区 | NULL | NULL | 10 || 龙华区 | NULL | NULL | 5 |+---------+---------+----------+------+
1.6.2、with cube
--group by a,b,c with cube 相当于对a,b,c各种组合group by之后union--相当于union -- group by null,a,b,c,ab,ac,bc,abcselect region,class, school,count(1)from school group by region,class, school with cube;
1.6.3、with rollup
--group by a,b,c with rollup --相当于union -- group by null,a,ab,abcselect region,class, school,count(1)from school group by region,class, school with rollup
感谢各位的阅读!关于"Hive如何实现查询"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
排序
字段
分组
查询
语句
数据
相同
函数
小学
方式
条件
运算符
运算
全局
内容
功能
升序
只有
多个
子句
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发模型用于
云服务器挂千牛可以防关联吗
犀浦网络安全案件
网络安全大事故
网络安全的主要安全策略
西城区数据网络技术咨询哪家好
好的软件开发设计公司哪家好
工控网络技术总结
宁海直销软件开发流程
软件开发毕业设计指导记录表
网络技术与平面设计
鲲鹏网络技术
达梦数据库目录如何修改
两岸网络安全
超融合技术如何实现网络安全
四大网络安全威胁事例
数据库数据输入时的常见基础错误
游戏服务器数据
软件开发怎样交货
赵瑞琦 美国网络安全
政府部门网络安全检查工作信息
上海争嗨网络技术有限公司
网络安全小学生作文
虹口区网络软件开发服务价格对比
软件开发的实习体会
四川大学网络安全学院就业方向
组织结构数据库设计
方舟服务器维护
苹果电脑直连服务器导出日志
sip服务器软件