1、hive的查询语法一大部分跟mysql类似
2、hive的一些排序
order by 全局排序:所有的数据都去往一个reduce里面去,会造成效率低下,慎用
sort by 每一个reduce内部进行排序,也就是局部有序,但是全局无序
distribured by 按照指定的字段进行hash 散列,按照这个字段进行取hash值,然后均匀的分到不同的reduce里面去
(字段.hasCode & Integer.MAX_VALUE) % numReduceTask
clustered by 除了具有distributed by的功能之外,还会对指定的字段进行排序,不能单独的指定 desc 或者asc 只有一种排法,就是desc
如果sort by的字段与distributed by 的字段相同,那么可以用 clustered by 来进行替代
3、having与where不同点
(1)where针对表中的列发挥作用,查询数据;having针对查询结果中的列发挥作用,筛选数据。
(2)where后面不能写分组函数,而having后面可以使用分组函数。
(3)having只用于group by分组统计语句。