一、数据排序
1.order by:全局排序
select * from student order by score desc;
2.sort by :内部排序
每个mapreduce内部进行排序,对全局结果集来说不是排序。
1.设置reduce个数: set mapreduce.job =3
;
2.查看设置reduce个数:set mapreduce.job
3.将查询结果导入到文件中(排序):insert overwrite local directory ' /路径' select * from score sort by
s_score;
3.distribute by: 分区排序
注意,hive中要求distribute by 使用在SORT BY语句之前
4.cluster by=distribute by + sort by
注意,排序不支持这ASC/DESC。
二、窗口函数
1.为什么要使用窗口函数:
窗口函数可以进行排序,生成序列号等一般的聚合函数无法实现的高级操作。
分组和排序
但是这些功能我们的group by和order by不是就可以实现了吗?看差别:
场景:统计各班人数
当我们使用group by来分组统计的时候
当我们使用窗口函数的时候
明显当我们使用group by分组时改变了原来数据库的行数,即生成了一张新表,但是使用窗口函数的时候并不会影响到我们的行数,这样我们在进行既需要分组又需要显示详细信息的时候可以使用该函数.
2.那么为什么叫窗口