【hive】hive order、sort、distribute、cluster by区别与联系

news2024/10/5 18:34:25

1、order by

hive中的order by 会对查询结果集执行一个全局排序,这也就是说所有的数据都通过一个reduce进行处理的过程,对于大数据集,这个过程将消耗很大的时间来执行。
在这里插入图片描述

2、sort by

hive的sort by 也就是执行一个局部排序过程。这可以保证每个reduce的输出数据都是有序的(但并非全局有效)。这样就可以提高后面进行的全局排序的效率了。对于这两种情况,语法区别仅仅是,一个关键字是order,另一个关键字是sort。用户可以指定任意期望进行排序的字段,并可以在字段后面加上asc关键字(默认)表示升序,desc关键字是降序排序。

在使用sort by之前,需要先设置Reduce的数量>1,才会做局部排序,如果Reduce数量是1,作用与order by一样,全局排序。
在这里插入图片描述

3、distribute by

distribute by 控制 map的输出在reduer中是如何划分的,mapreduce job 中传输的所有数据都是按照键-值对的方式进行组织的,因此hive在将用户的查询语句转换成mapreduce job时,其必须在内部使用这个功能。默认情况下,MapReduce计算框架会依据map输入的键计算相应的哈希值,然后按照得到的哈希值将键-值对均匀分发到多个reducer中去,不过不幸的是,这也是意味着当我们使用sort by 时,不同reducer的输出内容会有明显的重叠,至少对于排序顺序而已只这样,即使每个reducer的输出的数据都有序的。如果我们想让同一年的数据一起处理,那么就可以使用distribute by 来保证具有相同年份的数据分发到同一个reducer中进行处理,然后使用sort by 来安装我们的期望对数据进行排序:
在这里插入图片描述

4、cluster by

cluster by 除了distribute by 的功能外,还会对该字段进行排序,所以cluster by = distribute by +sort by 。

eg:select * from table cluster by year;

等价于:select * from table distribute by year sort by year;
在这里插入图片描述

转自:​https://zhuanlan.zhihu.com/p/93747613

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

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

相关文章

怎么将heic格式转化jpg,5种方法立马学

将HEIC格式转换为JPG格式是非常必要的。首先,HEIC(.heic)格式是苹果最新推出的图像格式。与JPEG相比,HEIC可以存储更多的图像信息,同时还支持透明度、深度和动态范围等功能。但由于HEIC格式相对较新,许多设…

Rust之泛型、特性和生命期(二):通用数据类型

开发环境 Windows 10Rust 1.69.0 VS Code 1.78.2 项目工程 这里继续沿用上次工程rust-demo 通用数据类型 我们使用泛型来为函数签名或结构等项目创建定义,然后我们可以将其用于许多不同的具体数据类型。让我们首先看看如何使用泛型来定义函数、结构、枚举和方法。…

27K 入职字节的那天,我哭了····

先说一下自己的个人情况,计算机专业,18年本科毕业,一毕业就进入了“阿里”测试岗(进去才知道是接了个阿里外包项目,可是刚毕业谁知道什么外包不外包的)。 更悲催的是:刚入职因为家里出现一些变故,没有精力…

【软件测试】Python自动化软件测试算是程序员吗?

今天早上一觉醒来,突然萌生一个念头,【软件测试】软件测试算是程序员吗?左思右想,总感觉哪里不对。做了这么久的软件测试,还真没深究过这个问题。 基于,内事问百度的准则: 结果…… 我刚发出软…

刚测完Bug,就被开除了····

我曾在一家软件公司担任功能测试工程师,经历了三年的工作。在这段时间里,我积累了丰富的测试经验和技能,在团队中也有着不错的表现。然而,最终我却被公司辞退了。 在我入职时,公司还没有建立完善的测试流程和标准。我的…

JVM系列-第10章-垃圾回收概述和相关算法(JVisualVM)

垃圾回收概述 Java 和 C语言的区别,就在于垃圾收集技术和内存动态分配上,C语言没有垃圾收集技术,需要程序员手动的收集。 垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的L…

【分享】阿里版ChatGPT—通义千问(初体验)

哈喽,大家好,我是木易巷~ 在上个月4月7号,木易巷开始申请阿里云大模型开始邀请测试「通义千问」,到今天早上,木易巷收到了申请通过的短信。 官网地址:tongyi.aliyun.com 迫不及待去测试了一下,效…

「直播精选问答」释放数据潜力,助力零售数智升级!

​5月10日的《释放数据潜力,助力零售数智升级》虹科零售专场BI直播课程活动,在各位观众的积极互动与热情反馈中落下帷幕! 为激发观众和读者朋友对于零售行业数智化趋势的思考与讨论,真正让BI知识在数字时代得以共享和碰撞&#xf…

MaaS来临,SaaS进入「奇点」时刻|产业深度

大模型热度持续发酵。MaaS的到来,不仅改变了云厂商的竞争格局,SaaS行业也将迎来「奇点」时刻。未来十年,基于MaaS底座,国内SaaS甚至可能会出现Salesforce一样的巨头。 作者|思杭 编辑|皮爷 出品|产业家 大模型热度正在持续发酵。…

阿里云镜像服务下载并安装Go环境

【阿里云镜像】下载并安装Go环境 一、参考链接 阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 (aliyun.com) golang镜像-golang下载地址-golang安装教程-阿里巴巴开源镜像站 (aliyun.com) GO语言安装以及国内镜像 - DbWong_0918 - 博客园 (cnblogs.com) 二、Go介绍 Gol…

vscode使用git对代码进行管理

2、暂存自己更改;3、拉取别人的代码,防止别人更改代码合并时发生冲突;4、上传自己的更改并合并代码

深度学习在自然语言处理方面的应用

前言 自然语言处理是一种将自然语言转换为计算机可处理的形式的技术。深度学习是一种非常强大的机器学习技术,它在自然语言处理方面也有广泛的应用。本文将详细介绍深度学习在自然语言处理方面的应用。 自然语言处理的基本步骤 自然语言处理的基本步骤包括分词、词…

智能驾驶汽车的系统开发与验证软件PreScan2022版

Simcenter Prescan是基于物理学的最佳仿真平台,在桌面、集群和云端,用于智能驾驶车辆开发,于2022年三月宣布发布2022.1版本。Simcenter Prescan 2022.1引入了与SUMO的协同仿真,用于自动生成交通,并配有程序化的脚本&am…

RestTemplate使用详解

文章目录 1.1 RestTemplate环境准备1)背景说明2)工程配置RestTemplate 1.2 RestTemplate API入门-11)get请求携带参数访问外部url2)get请求响应数据自动封装vo实体对象3)请求头携带参数访问外部接口 1.3 RestTemplate …

Spring:AOP 的详细内容

文章目录 Spring:Day 03AOP一、概述二、搭建环境三、实现 AOP1. 方式一:使用原生 Spring 的 API 接口2. 方式二:自定义类(切面)3. 方式三:注解 四、总结 Spring:Day 03 AOP 一、概述 AOP&…

相见恨晚的5款良心软件,每款都是经过时间检验的精品

今天来给大家推荐5款良心软件,每款都是经过时间检验的精品,用起来让你的工作效率提升飞快,各个都让你觉得相见恨晚! 1.颜色选择器——ColorPicker ColorPicker是一款用于在屏幕上选择颜色的工具。它可以让你快速地获取任意像素的颜色值,并复制到剪贴板…

信息收集-子域名

(一)、子域名 子域名是父域名的下一级,比如“huiyuan.xxx.com”和“bbs.xxx.com”这两个域名是“xxx.com”的子域名, 企业可能有多个、几十个甚至更多的子域名应用,因为子域名数量多,企业子域名应用的防护…

设计模式之【迭代器模式】,对集合访问的统一

文章目录 一、什么是迭代器模式1、迭代器模式使用场景2、迭代器模式的优势3、迭代器模式的四种角色4、迭代器模式的优缺点 二、手写一个迭代器1、迭代器模式的一般写法2、课程迭代器 三、源码中的迭代器1、ArrayList 一、什么是迭代器模式 迭代器模式(Iterator Pat…

(5.12-5.18)【大数据新闻速递】

关 注gzh“大数据食铁兽”,了解更多大数据快讯 【打造全国首个数据要素产业集聚区!浦东数据要素产业规模2025年将达1000亿元】 5月16日,“数启浦东”2023浦东新区数据要素产业主题系列活动启动。记者获悉,《张江数据要素产业集聚…

【实用工具】Guava EventBus(事件总线)快速入门

介绍 EventBus是Guava的事件处理机制,是设计模式中的观察者模式(生产/消费者编程模型)的优雅实现。对于事件监听和发布订阅模式,EventBus是一个非常优雅和简单解决方案,我们不用创建复杂的类和接口层次结构。 Java案…