2023.11.14-hive的类SQL表操作之,4个by区别

news2024/11/25 23:47:02

目录

1.表操作之4个by,分别是

2.Order by:全局排序

3.Cluster by

4.Distribute by :分区

5. Sort by :每个Reduce内部排序

6.操作练习

步骤一.创建表

步骤二.加载数据

 步骤三.验证数据


1.表操作之4个by,分别是

order by 排序字段名 

cluster by 分桶并排序字段名

distribute by字段名sort by字段名 

2.Order by:全局排序

order by排序永远都是全局排序,不受reduces数量影响,每次只用1个reduces

当你使用order by时,默认只走一个reduce,和你设多少个reduce个数无关;

select * from 表名 order by 表内字段名;

缺点:当数据量非常大时,耗时太长,效率低下,适用于数据量较小的场景;
优点:数据全局排序;

 

3.Cluster by

cluster by 字段名:  分桶且正序排序  

弊端: 分桶和排序是同一个字段,相对不灵活

注意: 需要你预先设置reduce个数,结果各个reduce文件内部有序,全局无序;

包含了分桶与排序,但排序默认是升序,无法与SORT BY,ASC或者DESC一起使用

--查询reduces的数量
set mapreduce.job.reduces;  --默认-1个

--修改reduces数量
set mapreduce.job.reduces = ; --修改为所需的数量

select * from 表名 cluster by 表内字段名;

4.Distribute by :分区

distribute by 字段名 sort by 字段名,distribute by负责分,sort by负责排序, 相对比较灵活

控制特定的key到指定的reducer,方便后续的聚集操作,类似MR中partition(自定义分区),一般结合sort by使用;

注意: 需要你预先设置reduce个数,结果各个reduce文件内部有序,全局无序;

1. distribute by的分区规则是根据分区字段的hash码与reduce的个数进行模除后,余数相同的分到一个区。
2. Hive要求distribute by语句要写在sort by语句之前;

--查询reduces的数量
set mapreduce.job.reduces;  --默认-1个

--修改reduces数量
set mapreduce.job.reduces = ; --修改为所需的数量

select * from 表名 distribute by 字段名 sort by 字段名 asc|desc ;

5. Sort by :每个Reduce内部排序

distribute by 字段名 sort by 字段名,distribute by负责分,sort by负责排序, 相对比较灵活

对于大规模的数据集 order by 的效率非常低。在很多情况下,并不需要全局排序,此时可以使用 sort by

Sort by 为每个 reducer 产生一个排序文件。每个 Reducer 内部进行排序,对全局结果集来说不是排序。

适用于数据量较大,但对排序要求不严格的场合,可以大幅度提升执行效率;

注意: 需要你预先设置reduce个数,结果各个reduce文件内部有序,全局无序;

--查询reduces的数量
set mapreduce.job.reduces;  --默认-1个

--修改reduces数量
set mapreduce.job.reduces= ; --修改为所需的数量

select * from 表名 distribute by 字段名 sort by 字段名 asc|desc ;

6.操作练习

现有学生表

需求:按照性别进行分类,再按照年龄进行降序排序

步骤一.创建表

-- 创建表
create  table stu(
    id int,
    name string,
    gender string,
    age int,
    cls string
)row format delimited fields terminated by ',';

步骤二.加载数据

学生表txt文件

 

上传文件到hdfs中,并加载到表

load data inpath '/input/students.txt' into table stu;

 步骤三.验证数据

select * from stu;

进行分桶排序查询

--查询reduces的数量
set mapreduce.job.reduces;  --默认-1个

--修改reduces数量为2
set mapreduce.job.reduces=2; --修改后为2

select * from stu  distribute by gender sort by age desc ;

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

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

相关文章

异常与中断(一)

使用生活实例引入中断 假设有个大房间里面有小房间,婴儿正在睡觉,他的妈妈在外面看书。 问:这个母亲怎么才能知道这个小孩醒? 过一会打开一次房门,看婴儿是否睡醒,然后接着看书一直等到婴儿发出声音以后再…

SQL之回炉重造

重新学sql,整个知识框架出来,之前学的太烂了 SQL是什么: SQL 是一种操作数据库的语言,包括创建数据库、删除数据库、查询记录、修改记录、添加字段等。SQL 虽然是一种被 ANSI 标准化的语言,但是它有很多不同的实现版…

医疗行业创新:低代码工具推动业务自动化和智能化

随着科技的不断发展,数字化已经成为各个领域的必然趋势。同样,在医疗领域,数字化转型也已经成为必要性。 早在新冠疫情之前很多国家和地区就已经开始尝试医疗数字化的转型。有很多人认为,医疗数字化在未来不是锦上添花&#xff0…

黑客泄露 3500 万条 LinkedIn 用户记录

被抓取的 LinkedIn 数据库分为两部分泄露:一部分包含 500 万条用户记录,第二部分包含 3500 万条记录。 LinkedIn 数据库保存了超过 3500 万用户的个人信息,被化名 USDoD 的黑客泄露。 该数据库在臭名昭著的网络犯罪和黑客平台 Breach Forum…

langchain实战-hello world

一、LangChain简介 github地址: GitHub - langchain-ai/langchain: ⚡ Building applications with LLMs through composability ⚡ LangChain是一个用于开发由语言模型支持的应用程序的框架。它使应用程序能够: 具有上下文感知能力:将语言模…

【左程云算法全讲7】二叉树基础算法及递归套路

系列综述: 💞目的:本系列是个人整理为了秋招面试的,整理期间苛求每个知识点,平衡理解简易度与深入程度。 🥰来源:材料主要源于左程云算法课程进行的,每个知识点的修正和深入主要参考…

【数据仓库】数仓分层方法详解与层次调用规范

文章目录 一. 数仓分层的意义1. 清晰数据结构。2. 减少重复开发3. 方便数据血缘追踪4. 把复杂问题简单化5. 屏蔽原始数据的异常6. 数据仓库的可维护性 二. 如何进行数仓分层?1. ODS层2. DW层2.1. DW层分类2.2. DWD层2.3. DWS 3. ADS层 4、层次调用规范 一. 数仓分层…

前端学习笔记--面试题系列总结

event loop它的执行顺序: 一开始整个脚本作为一个宏任务执行执行过程中同步代码直接执行,宏任务进入宏任务队列,微任务进入微任务队列当前宏任务执行完出队,检查微任务列表,有则依次执行,直到全部执行完执…

vue3 el-menu初始化时选中没有高亮的问题(default-active和index的问题)

首先看官方文档的示例: 需要注意的是: 1、default-active的值是字符串,那么index绑定的值也要是字符串,且数字对应。不能default-avtive绑定的是1,而menu-item的index绑定的是45 2、default-active的值是当前选中me…

产品运营的场景和运营策略

一、启动屏 1.概念 启动屏,特指 APP 产品启动时即显示的界面,这个界面一般会停留几秒钟时间,在这个时间内 APP 会在后台加载服务框架、启动各种服务 SDK 、获取用户地理位置、判断有无新版本、判断用户账户状态以及其他系统级别的…

2023.11.13 Spring Bean 的生命周期

目录 Spring 执行流程 Bean 的生命周期 五个阶段 深入理解 Bean 初始化 实例理解 总结梳理 经典面试题 Spring 执行流程 Bean 的生命周期 Spring 中 Bean 的生命周就是 Bean 在 Spring 中从创建到销毁的整个过程 五个阶段 1. 实例化 Bean 为 Bean 对象分配内存空间 …

如何在Photoshop 中创建橡皮图章效果

如何在 Photoshop 中制作橡皮图章。只需几个快速步骤即可将任何照片变成橡皮图章图像 1. 如何创建垃圾纸背景 步骤1 让我们开始学习如何制作自定义印章。创建一个新的850 x 550 像素 文档。当然,您可以为 PSD 文件使用其他尺寸, 但必须按比例调整本教程…

合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(二)

目录 基于ARM语音识别的智能家居系统 练习一 一、程序编译 练习二: 二、文件IO 三、文件IO常用API接口函数 1、打开文件 open() 2、将数据内容写入文件 write() 3、关闭(保存)文件 四、…

spring-cloud 简介

springcloud 定义 1.定义:springcloud为开发人员提供了在分布式系统中快速构建一些通用模式的工具(例如配置管理、服务发现、断路器、路由、控制总线等)2.微服务:基于单体应用,基于业务进行拆分,每个服务都是独立应用…

应用层——HTTPS协议

文章目录 一.HTTPS协议介绍二.关于加密1.什么是"加密"2.为什么要加密3.常见的加密方式4.数据摘要 && 数据指纹 三.HTTPS的工作过程探究1.方案1 —— 只使用对称加密(明文传输不可取)2.方案2 —— 只使用非对称加密(仅单向安…

图文示例:Python程序的运行原理解读

文章目录 一、编译型语言(C语言为例)二、动态型语言三、程序是如何运行起来的?四、分析五、dir 函数六、def 指令七、pyc文件1.pyc文件三大作用 八、import 指令总结关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三…

zabbix中图形可视化页面中文乱码解决

在window 电脑中的 C:\Windows\Fonts 里面是字体文件,里面有一个 SIMKAI.TTF (有的是小写) 这个是楷体 将该文件复制到虚拟机中 怎么导入应该不需要我说吧 查看zabbix的字体文件在哪个目录下 [rootlocalhost /]# find / -name fonts /boo…

【Android】画面卡顿优化列表流畅度五之下拉刷新上拉加载更多组件RefreshLayout修改

之前也写过类似组件的介绍: 地址:下拉刷新&上拉加载更多组件SmartRefreshLayout 本来打算用这个替换的,但在进行仔细研究发现不太合适。功能都很好,但嵌入不了当前的工程体系里。原因就是那啥体制懂的都懂。这样的组件需要改…

力扣 225. 用队列实现栈(C语言实现)

目录 1.解题思路2.代码实现 1.解题思路 这道题如果使用C会好写的多,因为可以使用C提供的队列来实现,但如果使用C语言则必须手写一个队列来实现,在这里我用了我前面文章中实现好的队列来解答,首先因为队列是先进先出,而…

揭秘视频号创作者分成计划,带你玩赚视频号流量主,保姆级教程

项目介绍 今天给大家分享一个视频号流量主的一个项目,也就是视频号创作者广告分成计划。这个项目在目前来说是一个蓝海赛道,做的人是比较少,作为副业来说还是非常适合个人来做的。如果大家有工作室的话,也可以进行批量操作&#…