您的位置:首页 > 新闻 > 资讯 > 澄海网站建设公司_设计app的软件有哪些_东莞百度推广优化公司_最近重大新闻

澄海网站建设公司_设计app的软件有哪些_东莞百度推广优化公司_最近重大新闻

2024/12/29 5:57:05 来源:https://blog.csdn.net/BabyFish13/article/details/144788586  浏览:    关键词:澄海网站建设公司_设计app的软件有哪些_东莞百度推广优化公司_最近重大新闻
澄海网站建设公司_设计app的软件有哪些_东莞百度推广优化公司_最近重大新闻

1、Order by 全局排序

ASC(ascend): 升序(默认)
DESC(descend): 降序

注意 :只有一个 Reducer,即使我们在设置set reducer的数量为多个,但是在执行了order by语句之后,当前此次的运算还是只有1个reducer,因为order by要做的是全局分区。(开窗函数内是分区内排序,不在此问题)

验证:

set mapreduce.job.reduces=3;
select * from stu_scores order by math;

总结:order by 语句的运行效率较低,一般要配合limit 使用。

2、Sort By 在每一个Reduce的job中进行排序

设置reduce 的job数为3

set mapreduce.job.reduces=3;

查看设置的reduce 的job数量

set mapreduce.job.reduces

测试sort by:

select * from stu_scores sort by math;

备注:在3个reduce job中分别进行排序。

3、Distribute By 分区(结合 sort by 使用)

有些场景我们需要控制某些特定行应该到同一reducer,做一些聚集操作。

distribute by 类似 MR 中 partition(自定义分区),进行分区,结合 sort by 使用。

设置reduce 的job数为3

set mapreduce.job.reduces=3;

查看设置的reduce 的job数量

set mapreduce.job.reduces

测试 distribute by....sort by

# 按照stu_id分区,分区内使用math排序

select * from stu_scores distribute by stu_id sort by math;

分区逻辑:根据distribute by 后的字段hash码与reduce 的个数进行模数后,决定分区路由。

4、cluster by

当 distribute by 和 sort by 字段相同时,可以使用 cluster by 方式。但是排序只能是升序排序,不能指定排序规则为 ASC 或者 DESC。

select * from stu_scores cluster by math;
select * from stu_scores distribute by math sort by math;

总结: cluster by 等价于distribute by 和 sort by 字段的升序排序。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com