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)
<7> hive group by,order by
最新推荐文章于 2023-12-01 21:29:49 发布
本文深入探讨Hive SQL的高级用法,包括group by、having子句的使用规范,reduce操作的影响,数据倾斜的优化策略,以及order by实现全局排序的机制。通过实例讲解,帮助读者理解如何有效运用这些特性提升查询效率。
1万+

被折叠的 条评论
为什么被折叠?



