group by ...having
1.select 后面非聚合列必须出现在group by 中
2.除了普通的列就是一些聚合操作
3.group by 后面可以跟表达式,比如substr(col)
4.group by 使用了reduce操作,受限于reduce数量,设置reduce参数mapred.reduce.task改变reduce数量(hive-0.13)
set mapreduce.job.reduces (2.1.1修改reduce数量改为这个)
5.输出文件个数于reduce个数相同,文件大小与reduce处理的数据量有关
6.数据倾斜优化参数 hive.groupby.skewindata
7.网络负载问题
select id,count(id) from a5 group by id having >2;
order by
1.后面可以有多列进行排序,默认按字典排序
2.是一个全局排序
3.order by 需要reduce操作,且只有一个reduce,与配置无关
create external table a5(id int,name string,age int) row format delimited fields terminated by ',' stored as textfile;
1,tom
2,jack
3,zz
select * from a5 order by id asc,name desc;
hive.mapred.mode=strict(严格模式下order by 必须加limit)