Hive如何实现查询
发表于:2025-01-25 作者:千家信息网编辑
千家信息网最后更新 2025年01月25日,这篇文章给大家分享的是有关Hive如何实现查询的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、查询官方演示案例:https://cwiki.apache.org/conf
千家信息网最后更新 2025年01月25日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安全错误
数据库的锁怎样保障安全
用友u8订单是哪个数据库
工行软件开发三级经理
北京首例网络安全审判案
河南新华电脑学院网络技术
银行软件开发流程图
惠普服务器专卖店
成都系统软件开发定做
嘉兴智合软件开发有限公司
房产中介erp数据库管理
数据库id 编码 关联
昆虫 数据库
坦克时间服务器不稳定
app软件开发品牌企业
河北大学有网络安全专业吗
删除数据库中数据库文件夹
代理服务器的端口
腾讯业务数据库技术栈
大数据与技术融合数据库技术
网络安全审计公务员
计算机软件开发要多久
网络安全工程师哪个专业最好
苹果7p尚未备份连接服务器失败
河北智慧养老软件开发专业制作
北京金冠利达网络技术开发
云服务器安全设置
洛阳软件开发价格
杭州交友软件开发哪里好
内生式 网络安全
中广核软件开发处
轻骑兵软件开发平台 等保测评