Hive的四种排序方法

Hive的四种排序方法

hive排序方法,hive的排序方式
hive有四种排序方法: ORDER BY 、SORT BY 、DISTRIBUTE BY 、CLUSTER BY

0. 测试数据准备
--数据准备
WITH t_emp_info AS (
SELECT * FROM (VALUES  (1001, '研发部', 16000 ), (1002, '市场部', 17000 ), (1003, '销售部', 11000 ), (1004, '研发部', 15000 ), (1005, '销售部', 12000 ), (1006, '研发部', 21000 ), (1007, '产品部', 16000 ), (1008, '研发部', 18000 ), (1009, '市场部', 17000 ), (1010, '产品部', 16000 ), (1011, '销售部', 10000 ), (1012, '研发部', 18000 ), (1013, '市场部', 15000 ) ) AS table_name(uuid, dept, salary)
)
uuiddeptsalary
1001研发部16000
1002市场部17000
1003销售部11000
1004研发部15000
1005销售部12000
1006研发部21000
1007产品部16000
1008研发部18000
1009市场部17000
1010产品部16000
1011销售部10000
1012研发部18000
1013市场部15000
1. ORDER BY(全局排序)
order by: 全局排序, 所有的任务分配在一个reduce上面, 可以保证全局有序, 当输入规模较大时, 将会花费大量的时间进行计算;
order by 后面可以有多列进行排序, 默认按照字典排序(asc(默认):升序, desc:降序);
如果指定 hive.mapred.mode=strict(严格模式, 默认是: nonstrict(非严格模式)), 严格模式下必须使用limit来限制输出条数,否则会报错;
-- order by 多列默认升序排列
SELECT uuid, dept, salary
FROM t_emp_info a 
ORDER BY dept, salary
;
uuiddeptsalary
1007产品部16000
1010产品部16000
1013市场部15000
1009市场部17000
1002市场部17000
1004研发部15000
1001研发部16000
1008研发部18000
1012研发部18000
1006研发部21000
1011销售部10000
1003销售部11000
1005销售部12000
-- order by 降序排列
SELECT uuid, dept, salary
FROM t_emp_info a 
ORDER BY salary DESC 
;
uuiddeptsalary
1006研发部21000
1012研发部18000
1008研发部18000
1002市场部17000
1009市场部17000
1001研发部16000
1007产品部16000
1010产品部16000
1004研发部15000
1013市场部15000
1005销售部12000
1003销售部11000
1011销售部10000
2. SORT BY (分区内排序)
sort by 是在进入 reducer之前进行排序, 也就是说保证了局部有序, 每一个reducer出来的数据是有序的, 但是不能保证全局的数据是有序的, 除非只有一个reducer存在;
sort by 出来的数据是局部有序, 在进行一次归并排序, 即可做到全局排序了, 可以提高全局排序的效率;
-- sort by 局部有序, 数据量少,没有体现局部有序的现象
SELECT uuid, dept, salary
FROM t_emp_info a 
SORT BY salary
;
uuiddeptsalary
1011销售部10000
1003销售部11000
1005销售部12000
1013市场部15000
1004研发部15000
1007产品部16000
1001研发部16000
1010产品部16000
1009市场部17000
1002市场部17000
1012研发部18000
1008研发部18000
1006研发部21000
3. DISTRIBUTE BY (分区)
distribute by 是控制map端输出结果分发, 相同字段的输出分发到一个reduce节点处理;
distribute by 一般和 sort by 一起使用, sort by 是将每一个reduce产生一个有序文件, 注意distribute by 要在 sort by 之前;
-- distribute by 
SELECT uuid, dept, salary
FROM t_emp_info a 
DISTRIBUTE BY salary SORT BY salary DESC 
;
uuiddeptsalary
1006研发部21000
1012研发部18000
1008研发部18000
1002市场部17000
1009市场部17000
1001研发部16000
1007产品部16000
1010产品部16000
1004研发部15000
1013市场部15000
1005销售部12000
1003销售部11000
1011销售部10000
4. CLUSTER BY (分区排序)
cluster by 具有 distribute by 和 sort by 的功能, 两者排序所用的列值相同时, 可以使用 cluster by 代替;
cluster by 只能使用升序, 不能使用降序, 不需要指定排序方式(ASC/DESC);
-- cluster by 
SELECT uuid, dept, salary
FROM t_emp_info a 
CLUSTER BY salary 
;-- 两者结果一样
SELECT uuid, dept, salary
FROM t_emp_info a 
DISTRIBUTE BY salary SORT BY salary
;
uuiddeptsalary
1011销售部10000
1003销售部11000
1005销售部12000
1013市场部15000
1004研发部15000
1007产品部16000
1001研发部16000
1010产品部16000
1009市场部17000
1002市场部17000
1012研发部18000
1008研发部18000
1006研发部21000
end

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Android 13】使用Android Studio调试系统应用之Settings移植(六):BannerMessagePreference

文章目录 一、篇头二、系列文章2.1 Android 13 系列文章2.2 Android 9 系列文章2.3 Android 11 系列文章三、BannerMessagePreference的移植3.1 新的问题:找不到 R.dimen.settingslib_preferred_minimum_touch_target3.2 问题分析(一)3.2.1 资源定义的位置3.2.2 检查依赖3.2…

3D换肤在服装行业的应用

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 通过采用高质量的 3D 模型,企业可以提供更加身临其境的体…

解决阿里云远程连接yum无法安装问题(Ubuntu 22.04)

解决阿里云远程连接yum无法安装问题(Ubuntu 22.04) 第一步 进入阿里云远程连接后,尝试安装宝塔面包第二步:尝试更新软件包等一些列操作第三步:完成上述操作之后,尝试安装yum第四步:尝试更换清华…

FPGA——XILINX原语(1)

FPGA——XILINX原语(1) 1.时钟组件(1)BUFG(2)BUFH(3)BUFR(4)BUFIO(5)使用场景 2.IO端口组件(1)IDDR&#xff0…

PostGIS学习教程十五:几何图形的有效性

PostGIS学习教程十五:几何图形的有效性 在90%的情况下,“为什么我的查询给了我一个’TopologyException’错误"的问题的答案是"一个或多个输入的几何图形是无效的”,这就引出了这样一个问题:几何图形"无效"是什么意思&a…

K8S 搜集java应用pod重启前现场 —— 筑梦之路

JAVA技术广泛用于各行各业,而云原生的流行,越来越多的企业将java应用搬进K8S中进行部署管理,OOM是java应用比较常出现的故障问题,对于容器环境的java应用搜集OOM等现场比较有难度,为了持续对应用的优化,搜集…

Android 电话拨打界面按back键不结束通话活动

按back键返回时,不结束当前的通话活动【生命周期】 /vendor/mediatek/proprietary/packages/apps/Dialer/java/com/android/incallui/InCallActivity.java Override public boolean onKeyUp(int keyCode, KeyEvent event) { DialpadFragment dialpadFragment…

Pandas教程(二)—— 不同格式的数据读取

前言:几种常用数据格式的介绍 csv文件 1. 逗号分隔值文件,以纯文本形式(记事本)存储表格数据 2. 它是一种平面文件:即只存储数据和文字,不能存储公式、图表等 3. 更适合存储大数据,一般用来批…

Codeforces Round 917 (Div. 2)更新中...

A.Least Product(思维) 题意: 给出一个数组 a 1 , a 2 , . . . , a n a_1, a_2, ..., a_n a1​,a2​,...,an​,你可以进行若干次以下操作: 选择数组中的一个元素 a i a_i ai​,将这个数字修改为 0 ∼ a i 0 \sim a_i 0∼ai​之…

Stream流的简单使用

stream流的三类方法 获取Stream流 ○ 创建一条流水线,并把数据放到流水线上准备进行操作中间方法 ○ 流水线上的操作 ○ 一次操作完毕之后,还可以继续进行其他操作终结方法 ○ 一个Stream流只能有一个终结方法 ○ 是流水线上的最后一个操作 其实Stream流非常简单,只…

Unity3D 安装和下载指南及汉化

Unity3D是一款强大的游戏开发引擎,为开发者提供了丰富的工具和资源,使得游戏制作变得更加简单和高效。本文将介绍Unity3D的安装和下载步骤,以帮助初学者迅速入门。 步骤一:访问Unity官网 首先,打开浏览器&#xff0c…

记录为 uni-app的扩展组件(uni-ui)和 微信小程序标签 添加行内样式的正确做法

如题&#xff0c;首先&#xff0c;正确为微信小程序标签添加行内样式&#xff0c;其做法是&#xff1a;&#xff08;以view为例&#xff09; <view style"width: 400rpx; height: 400rpx; background-color: green;">goods_list</view>也就是说&#xf…

Qt 中使用 MySQL 数据库保姆级教程(上)

作者&#xff1a;billy 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 前言 在 Qt 中默认只搭载了 QSqlLite 数据库驱动&#xff0c;若要使用其他数据库需要自己下载数据库&#xff0c;并将数据库驱动加载到…

vite定制需求打包

技术栈&#xff1a;vue3vite 开发的管理系统需要应用在多个医院。产品提了一个需求&#xff0c;针对某一家医院&#xff0c;需要将登录页的logo去掉&#xff0c;其它的医院保留。由于未登录状态无法获取医院信息&#xff0c;因此采用定制打包的方案。 解决方案&#xff1a; 添…

虚拟机Windows Server 2012 与ubuntu的安装与布置

介绍虚拟机 虚拟机&#xff08;Virtual Machine&#xff0c;简称VM&#xff09;是一种通过软件模拟的计算机系统&#xff0c;可以在一台物理计算机上同时运行多个独立的操作系统和应用软件。虚拟机将物理计算机的硬件资源&#xff08;如处理器、内存、硬盘等&#xff09;虚拟化…

【git设置代理】

git设置代理 设置https代理全局设置&#xff08;不推荐&#xff09;只对GitHub代理&#xff08;推荐&#xff09;取消代理 配置ssh的代理配置ssh的configLinux、MacOSWindows config 内容测试是否设置成功 设置https代理 全局设置&#xff08;不推荐&#xff09; #使用http代…

2023年12月30日(星期六)骑行太平

2023年12月30日 (星期六) 骑行太平&#xff0c;早8:30到9:00&#xff0c; 大观公园门囗集合&#xff0c;9:30准时出发 【因迟到者&#xff0c;骑行速度快者&#xff0c;可自行追赶偶遇。】 偶遇地点:大观公园门囗集合 &#xff0c;家住东&#xff0c;南&#xff0c;北的骑友在…

Nginx快速入门:return、rewrite重定向、重写详解(六)

0. 引言 我们在日常的生产过程中&#xff0c;常常有需要重定向转发的需求&#xff0c;比如企业更换了域名&#xff0c;但又要保证之前的域名能访问&#xff0c;这就需要做重定向的跳转。 我们在之前的章节中学习了Nginx的负载均衡、各类转发代理配置&#xff0c;今天继续来补…

《LIO-SAM阅读笔记》2.ImageProjectionfeatureExtraction

前言&#xff1a; LIO-SAM中ImageProjection类和featureExtraction类的内容比较简单&#xff0c;这里就放在一起记录&#xff0c;这两部分属于点云的预处理前端&#xff0c;ImageProjection用来点云的运动去畸变和为每帧点云位姿进行粗略初始化&#xff0c;featureExtraction类…

Camtasia2024中文最新免授权版下载

TechSmith Camtasia2024免费版是一款非常专业且功能强大的屏幕录制工具&#xff01;使用集屏幕录像机、视频编辑器的功能于一身&#xff0c;能够轻松的录制和创建具有专业外观的视频。这套非常强大的专业录屏与视频创作大型软件套装包含捕获屏幕录制、视频剪辑和编辑、视频录音…