Hive知识回顾2

news2024/11/17 7:41:17

一、分桶表

 

1.1分桶表的概念

        分桶表也叫做桶表,源自建表语法中bucket单词。是一种用于==优化查询==而设计的表类型。该功能可以让数据分解为若干个部分易于管理。

        在分桶时,我们要指定==根据哪个字段将数据分为几桶(几个部分)==。默认规则是:Bucket number = hash_function(bucketing_column) mod num_buckets。

        id

        10

        11

        12

        算法:哈希求余,分桶字段(key)求hash值 => 10 11 12

        (每个字段都有一个hash值,数字型就是它本身;字符串会hash算法求出一个数字)

                (接着hash求余)

                (字段完全相同的,一定在同一个筒中)

        10 % 3 = 1 => 编号为1号桶

        11 % 3 = 2 => 编号为2的桶

        12 % 3 = 0 => 编号为0的桶

        1亿条数据 => 10个桶 => 1000万条数据

意义:① 优化手段,比分区更加精细的划分,但是数据平均 ② 适合数据抽样

        可以发现桶编号相同的数据会被分到同一个桶当中。hash_function取决于分桶字段bucketing_column的类型:

        如果是int类型,hash_function(int) == int;

        如果是其他类型,比如bigint,string或者复杂数据类型,hash_function比较棘手,将是从该类型派生的某个数字,比如hashcode值。

1.2 分桶表的创建

 

1.3分桶表的使用好处 

 

         和非分桶表相比,分桶表的使用好处有以下几点:

                ① 优化手段,比分区更加精细的划分,但是数据平均 ② 适合数据抽样

        1、==基于分桶字段查询时,减少全表扫描==

        --基于分桶字段state查询来自于New York州的数据
        --不再需要进行全表扫描过滤
        --根据分桶的规则hash_function(New York) mod 5计算出分桶编号

                
        --查询指定分桶里面的数据 就可以找出结果  此时是分桶扫描而不是全表扫描
        select * from t_usa_covid19_bucket where state="New York";

 

 

 

         2、==分桶表数据进行抽样==

        1亿 => 10个桶 => 1g个桶进行抽样

        当数据量特别大时,对全体数据进行处理存在困难时,抽样就显得尤其重要了。抽样可以从被抽取的数据中估计和推断出整体的特性,是科学实验、质量检验、社会调查普遍采用的一种经济有效的工作和研究方法。

 

二、总结

        Hive分区表与分桶表区别:

               1.语法不同,分区字段必须是虚拟的,分桶字段必须是实际存在的。

                2.底层表现形式不同,分区是把数据集分文件夹存储,分桶是把数据集分文件存储。

                3.分区表往往是能判断出数据分配在哪个区中

                   分桶表基于哈希求余,很难估算出数据具体分配在哪个桶中

                4.分桶表相对于分区,是更加细粒度的划分

        应用场景:

                分区为了避免全表扫描,加快查询速度,分区裁剪

                分桶虽然也有避免全表扫描,加快查询速度,还可以进行抽样查询

        相同点:都是优化手段,都是建表可选操作。

        在实际工作中,分区表相对来说使用更加多一些!!!

 

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

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

相关文章

人脸识别中的深度学习

深度学习在人脸识别中的应用 人脸识别的过程包括: 人脸检测人脸对齐特征提取(在数学上,实质上是:空间变换)特征度量 其中,特征提取与度量,是人脸识别问题中的关键问题,也是相关研究…

使用 ChatGPT 辅助学习——为自己找一个老师

我们每个人都有许多标签,例如高中生、成绩中等、文科,根据这些标签我和其他拥有相同标签的人分配了相同的教程、班级和老师,这可以带来效率上的提升,因为同一份教程、老师就可以服务几十上百人,而无须为每个人定制&…

软件测试工程师的核心竞争力究竟是什么?

对于测试员而言,了解自己岗位的核心竞争力是非常重要的。在职业初期,许多人认为掌握代码才是软件测试的核心竞争力,但是随着经验的增加,我们会发现真正的核心竞争力是由多个方面组成的。 首先,测试人员需要具备良好的测…

BERT 的面试题

BERT 的简介 1、BERT 是什么?它是用来做什么的? BERT(Bidirectional Encoder Representations from Transformers)是由Google开发的自然语言处理模型,是一种预训练模型,可以用于多种自然语言处理任务&…

【python自动化脚本—实现excel参数化循环调用判定结果】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、需求背景二、我要做什么三、已有接口四、脚本实现五、实现效果图 前言 为提升自己的python能力,记录在工作中实现的自动化脚本,温故…

51单片机(七)定时器

❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要…

写文章的软件-一款写作文章的软件

写文章的软件 写文章的软件是一种工具,可以帮助用户轻松快速地创作高质量的文章。该软件一般包括以下几个主要功能: 写作界面:提供简洁、美观的写作界面,让用户专注于文章创作,同时可以进行排版、字体、颜色等调整。 …

力扣707. 设计链表

707. 设计链表 - 力扣(Leetcode) class MyLinkedList { public:// 定义链表节点结构体struct LinkedNode {int val;LinkedNode* next;LinkedNode(int val):val(val), next(nullptr){}};// 初始化链表MyLinkedList() {_dummyHead new LinkedNode(0); // …

BasicVSR++代码解读(分模块介绍-前向传播函数)

一、前向传播函数def forward(self, lqs): 输入:低质量序列L,shape为**(n, t, c, h, w)。 输出:HR序列,shape为(n, t, c, 4h, 4w)**。 (1)读取输入数据的维度大小     这里的n,t,c,h,w分别表示:一个bitch的图片数…

数据结构之双向链表,实现双向链表的增删改查

目录 一、双向链表的定义 1.双向链表节点的定义 2.双向链表的初始化 二、双向链表的函数接口实现 1.双链表的尾插 2.双向链表的尾删 3.双向链表的头插 4.双向链表的头删 6.双向链表在pos前面插入 7.双向链表删除pos位置的节点 8.双向链表的销毁 总结 一、双向链表的定义 双向链…

PyQt5桌面应用开发(11):摸鱼也要讲基本法,两个字,16

本文目录 PyQt5桌面应用系列鼠标不要钱,手腕还不要钱吗?PyQt5源程序python文件资源定义界面定义文件 技术要素资源文件StyleSheetsQMainWindow设置窗体几何 结论 PyQt5桌面应用系列 PyQt5桌面应用开发(1):需求分析 PyQ…

EC6110-Hi3798MV310-当贝纯净桌面-卡刷强刷固件包

EC6110-Hi3798MV310-当贝纯净桌面-卡刷强刷固件包-内有教程及短接点 特点: 1、适用于对应型号的电视盒子刷机; 2、开放原厂固件屏蔽的市场安装和u盘安装apk; 3、修改dns,三网通用; 4、大量精简内置的没用的软件&a…

【信息安全案例】——网络攻击分析(学习笔记)

📖 前言:随着信息技术的发展,网络空间的斗争可谓是兵家必争之地,网络攻击的事件层出不穷。道高一尺魔高一丈,了解常见的网络攻击类型有利于我们日后工作生活的安全稳定。 目录 🕒 1. 网络攻击威胁&#x1f…

CM211-2-YS-Hi3798MV300/MV310-当贝纯净桌面线刷固件包(可救砖)

CM211-2-YS-Hi3798MV300/MV310-当贝纯净桌面线刷固件包(可救砖)-内有教程 特点: 1、适用于对应型号的电视盒子刷机; 2、开放原厂固件屏蔽的市场安装和u盘安装apk; 3、修改dns,三网通用&…

05- 算法解读 R-CNN (目标检测)

要点: R-CNN可以说是利用深度学习进行目标检测的开山之作。 一 R-CNN算法 R-CNN可以说是利用深度学习进行目标检测的开山之作。作者Ross Girshick多次 在PASCAL VOC的目标检测竞赛中折桂,曾在2010年带领团队获得终身成就奖。 RCNN算法流程可分为4个步…

ACM输入输出

写在前面 主要记录一下ACM输入输出的写法&#xff1b; 一、输入数值 1. 给定N的定长多行输入 题目&#xff1a;https://ac.nowcoder.com/acm/contest/5657/B&#xff1b; 代码&#xff1a; #include <iostream> #include <stdio.h> using namespace std;int m…

JavaWeb《后端内容:1. Tomcat - Servlet - Thymeleaf》

目录 1. 基础概念 1.1 BS架构和CS架构 1.2 Tomcat图解 2.TomCat 2.1 IDEA配置web项目和tomcat 2.2 idea启动TomCat因为端口号失败的问题 3.Servlet使用流程 3.1 Servlet简单图解 3.2 Servlet导入依赖 3.3 编写Servlet和add.html 3.4 试着使用Jdbc和Dao层连接水果库存…

如何是Jetpack Compose构建漂亮的应用程序

如何是Jetpack Compose构建漂亮的应用程序 Jetpack compose 是在 Android 上构建 UI 的未来。 如果您完全不熟悉 android 并且不知道 Jetpack Compose 是什么——它基本上是一种构建本机用户界面的新方法。 Jetpack compose官方站点 https://developer.android.com/jetpack/co…

MySQL执行顺序

MySQL执行顺序 MySQL语句的执行顺序也是在面试过程中经常问到的问题&#xff0c;并且熟悉执行顺序也有助于SQL语句的编写。 SELECT FROM JOIN ON WHERE GROUP BY HAVING ORDER BY LIMIT执行顺序如下&#xff1a; FROM ON JOIN WHERE GROUP BY # (开始使用别名) SUM # SUM等…