hive聚合函数之排序

1 全局排序(Order By)

Order By:全局排序,只有一个Reduce。
(1).使用Order By子句排序
asc(ascend):升序(默认)
desc(descend):降序
(2).Order By子句在select语句的结尾

基础案例实操

(1)查询员工信息按工资升序排列

select 
    * 
from emp 
order by sal;

在这里插入图片描述
在这里插入图片描述
(2)查询员工信息按工资降序排列

select 
    * 
from emp 
order by sal desc;

在这里插入图片描述
(3)按照员工薪水的2倍排序

select 
    ename, 
    sal * 2 twosal 
from emp 
order by twosal;

在这里插入图片描述
在这里插入图片描述

(4) 多个列排序案例实操
按照部门和工资升序排序。

select 
    ename, 
    deptno, 
    sal 
from emp 
order by deptno, sal;

在这里插入图片描述
在这里插入图片描述

2 每个Reduce内部排序(Sort By)

Sort By:对于大规模的数据集order by的效率非常低。在很多情况下,并不需要全局排序,此时可以使用Sort by。
Sort by为每个reduce产生一个排序文件。每个Reduce内部进行排序,对全局结果集来说不是排序。
(1)设置reduce个数

set mapreduce.job.reduces=3;

(2)查看设置reduce个数

set mapreduce.job.reduces;

(3)根据部门编号降序查看员工信息

select 
    * 
from emp 
sort by deptno desc;

在这里插入图片描述

在这里插入图片描述
通过两次sort by 排序比一次order by排序执行效率高
在这里插入图片描述

3 分区(Distribute By)

Distribute By:在有些情况下,我们需要控制某个特定行应该到哪个Reducer,通常是为了进行后续的聚集操作。distribute by子句可以做这件事。distribute by类似MapReduce中partition(自定义分区),进行分区,结合sort by使用。
对于distribute by进行测试,一定要分配多reduce进行处理,否则无法看到distribute by的效果。

案例实操:
(1)设置reduce个数

set mapreduce.job.reduces=3;

(2)查看设置reduce个数

set mapreduce.job.reduces;

(3) 先按照部门编号分区,再按照员工编号薪资排序

select 
    * 
from emp 
distribute by deptno 
sort by sal desc;

distribute by的分区规则是根据分区字段的hash码与reduce的个数进行相除后,余数相同的分到一个区。
Hive要求distribute by语句要写在sort by语句之前。
演示完以后mapreduce.job.reduces的值要设置回-1,否则下面分区or分桶表load跑MapReduce的时候会报错。

在这里插入图片描述
在这里插入图片描述

4 分区排序(Cluster By)

当distribute by和sort by字段相同时,可以使用cluster by方式。
cluster by除了具有distribute by的功能外还兼具sort by的功能。但是排序只能是升序排序,不能指定排序规则为asc或者desc。

select 
    * 
from emp 
cluster by deptno;

select 
    * 
from emp 
distribute by deptno 
sort by deptno;

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/243593.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C#- 代理模式(静态)

与装饰器模式类似,只继承接口; 示例代码: interface IStudent {public void GetInfo(); } class Student : IStudent {public void GetInfo(){Console.WriteLine("上小学中。。。");} } class ProxyStudent : IStudent {private …

纸质表格扫描转Excel的利器,让您省钱省劲

将纸质表格扫描到电脑Excel上是一种快捷而高效的数字化处理方法,使得数据可以方便地进行编辑、分析和共享。本文将介绍几种常用的方法来完成这项任务。 第一种方法是使用扫描仪。现代扫描仪具备较高的分辨率和颜色还原能力,可以将纸质表格转化为高质量的…

操作系统原理-作业三-存储器

某页式虚拟存储管理系统中,页面大小为 2KB ,某一进程分配到的内存块数为 3 ,并按下列地址顺序引用内存单元: 2531 、 6632 、 4140 、 3584 、 2892 、 5743 、 1700 、 2148 、 6940、 4345 、 3209 、 0732 、 6202 、 4541 。…

SAP ABAP 使用cl_md_bp_maintain=>maintain更新BP税号CN0的数据,更新结果都会变成CN5类型问题处理

SAP ABAP 使用cl_md_bp_maintain>maintain更新BP税号CN0的数据,更新结果都会变成CN5类型,CN1类型一切正常。 1、BP税号 2、跟踪方法中代码 查看底层逻辑,发现CN0都被强制替换成CN5了,BP GUI界面还能正常使用CN0. 查询NOTES&a…

机器学习:从概念到应用

机器学习:从概念到应用 一、引言 随着科技的飞速发展,人工智能已经渗透到我们生活的方方面面。作为人工智能领域的一个重要分支,机器学习正在改变我们的世界。它通过让计算机从数据中学习,实现自我优化和改进,为各行…

JS轮询任务查询订单退款状态

出现问题: 因为订单的支付不是普通的微信支付,是第三方支付,而且由于该三方支付自己内部设置的一些情况,导致退款的时候,发起了退款申请,但是会在15~20秒左右,才会返回结果,不像微信…

ISCTF2023 Reverse方向 WP

文章目录 ReversecrackmeEasyRebabyReeasy_z3FloweyRSAeasy_flower_teamfx_rez3_revengeWHERE Reverse crackme 、 加了UPX壳,可以看到EP Section处UPX标识被修改了 用WinHex修改 之后UPX脱壳 得到flag。 EasyRe 逆向一下,先逆序,再做一些…

台阶仪在大型基板应用有哪些

探针式轮廓仪(台阶仪)是一种用于测量物体表面轮廓和形状的仪器。在大型基板应用中,它可能被用于检测和分析半导体器件、平板显示屏、光伏电池板等大尺寸基板上的微小结构和形状。这样的测量对于确保生产质量、提高制造效率和优化工艺非常重要…

cfa一级考生复习经验分享系列(三)

从总成绩可以看出,位于90%水平之上,且置信区间全体均高于90%线。 从各科目成绩可以看出,所有科目均位于90%线上或高于90%线,其中,另类与衍生、公司金额、经济学、权益投资、固定收益、财报分析表现较好,目测…

张驰课堂:在线六西格玛认证,成就个人职业发展

随着数字化学习平台的兴起,六西格玛的学习方式更加灵活。以下是线上学习平台与传统面授培训的对比: 线上学习平台: 灵活性:学员可以根据自己的时间安排自学,不受地点限制。 成本效益:通常在线课程费用较低…

MySQL中的时间函数整理汇总

1.获取当前时间 -- 获取当前时间 SELECT NOW(); -- 获取当前日期 SELECT CURDATE(); -- 获取当前时分秒 SELECT CURTIME(); 2.获取对应日期对应的年/月/日/月份名/星期数 -- 返回对应日期对应的年/月/日/月份名/星期数 select year(now())as 年,month(now())as 月,day(now())…

迅速理解什么是通信前置机

通信前置机设在两个通信对象之间,是实质性的物理服务器,适应不同通信协议或数据格式之间的相互转换。 前置机的作用: 隔离——隔离客户端与服务端,保障后端安全减负——处理非核心业务,分担后端服务器压力&#xff0…

CBTC2024 • 零碳未来!CBTC上海储能技术展览会

国际氢能投融资与发展联盟、 湖南省电池产业协会 、沪粤储能产业联盟主办的一场备受瞩目的盛会——2024年CBTC上海国际储能技术展。储能技术是当今全球能源领域的核心热点之一,也是实现能源转型和可持续发展的重要途径。CBTC上海国际储能技术展是全球规模最大、最具…

临界资源访问一个有趣现象

先看一个例子&#xff1a;我们创建10个线程&#xff0c;每一个线程对同一个地址上的值都进行加一100000次&#xff0c;那最后结果是不是1000000呢&#xff1f; #include <stdio.h> #include <pthread.h> #include <unistd.h>#define THREAD_COUNT 10void …

阿里云Centos8安装Dockers详细过程

一、卸载旧版本 较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序&#xff0c;请卸载它们以及相关的依赖项。 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \do…

OpenHarmony应用编译 - 如何在源码中编译复杂应用

功能简介 在OpenHarmony系统中预安装应用的hap包会随系统编译打包到镜像中&#xff0c;目前有两种编译预安装应用hap包的方式&#xff0c;一种为随系统编译时&#xff0c;编译应用源码生成hap包的方式&#xff0c;另一种是将已生成的hap包放入系统源码中&#xff0c;再进行打包…

three.js聚光源SpotLight例子

效果&#xff1a; 说明&#xff1a;这里创建了SphereGeometry 球缓冲几何体&#xff0c;使用的材质是兰伯特网格材质MeshLambertMaterial&#xff0c;并对球缓冲几何体使用了纹理贴图效果&#xff0c;添加了聚光源&#xff0c;全部代码如下&#xff1a; <template><d…

Redis队列原理解析:让你的应用程序运行更加稳定!

一、消息队列简介 消息队列&#xff08;Message Queue&#xff09;&#xff0c;字面意思就是存放消息的队列。最简单的消息队列模型包括 3 个角色&#xff1a; 消息队列&#xff1a;存储和管理消息&#xff0c;也被称为消息代理&#xff08;Message Broker&#xff09;生产者…

java 执行linux 命令

文章目录 前言一、linux命令执行二、使用步骤三、踩坑 前言 java 执行linux 命令&#xff1b; 本文模拟复制linux文件到指定文件夹后打zip包后返回zip名称&#xff0c;提供给下载接口下载zip&#xff1b; 一、linux命令执行 linux命令执行Process process Runtime.getRunti…

【已解决】java 无法将类 XX类中的构造器 X应用到给定类型

原因&#xff1a; 实际参数列表和形式参数列表长度不同 解决方法&#xff1a; 给类添加AllArgsConstructor注解即可。