hive查询语句的执行顺序:
关键词 |
备注 |
(1) from |
|
(2) on |
|
(3) join |
full join 合并,不去重,列拼接 |
(4) where |
|
(5) group by |
同时计算聚合函数,具有去重作用,分组去重,效率比distinct高;一定要与聚合函数连用 |
(6) having |
必须跟 group by 连用 |
(7) select |
|
(8) distinct |
去重,需要加载整个表的数据到一个reduce,效率较低,会导致数据倾斜,不如group by好 用法:放在字段名称前面 |
(9) distribute by /cluster by |
cluster by 相当于合并了distribute by与sort by |
(10) sort by |
局部排序,每个reduce内部的排序 |
(11) order by |
全局排序 |
(12) limit |
|
(13) union /union all |
union 去重,行拼接,字段得相同;union all 不去重合并,也可用于数据插入使用 |
注:此执行顺序为SQL语句的执行顺序,非Hive执行计划中的执行顺序!
distinct SELECT DISTINCT class from stud ;取出stud表中的班级有哪些,distinct 负责去重! 主要用于去重
注意事项:
selelct distinct name,city from student;
select count(distinct (user_id));
特殊案例: select count(distinct name) from A; --表中name去重后的数目, 此写法SQL Server支持,而Access不支持 |