当前位置: 首页 > news >正文

Hive数仓操作(八)

一、Hive中的分桶表

1. 分桶表的概念

分桶表是Hive中一种用于提升查询效率的表类型。分桶指的是根据指定列的哈希值将数据划分到不同的文件(桶)中。


2. 分桶表的原理

  • 哈希分桶:根据分桶列计算哈希值,对哈希值取模,将数据分配到相应的桶中。
  • 分区/分桶:分区是基于存储路径的划分,而分桶是基于数据文件的划分。
假设按以下规则分桶
  • 分桶列id
  • 分桶数量:4
分桶计算过程
  1. 计算哈希值:对每个id计算其哈希值。
  2. 取模运算:对哈希值进行取模运算,模数为分桶数量(4)。
  3. 分配到桶:根据取模结果,将数据分配到相应的桶。
示例

假设有以下id数据:101, 102, 103, 104, 105

  • id = 101:

    • 哈希值:假设为hash(101) = 1111
    • 取模:1111 % 4 = 3
    • 分配到桶3
  • id = 102:

    • 哈希值:假设为hash(102) = 2222
    • 取模:2222 % 4 = 2
    • 分配到桶2
  • id = 103:

    • 哈希值:假设为hash(103) = 3333
    • 取模:3333 % 4 = 1
    • 分配到桶1
  • id = 104:

    • 哈希值:假设为hash(104) = 4444
    • 取模:4444 % 4 = 0
    • 分配到桶0
  • id = 105:

    • 哈希值:假设为hash(105) = 5555
    • 取模:5555 % 4 = 3
    • 分配到桶3

3. 分桶表的用途

  • 加快表连接速度:当两个表的连接字段作为分桶字段时,且分桶数量相等或成倍数关系时,能够加快连接速度。
  • 支持抽样查询:可以快速获取数据的样本。

在这里插入图片描述

加速原理
  • 分桶数量相同:每个对应的桶只需要在各自的桶中进行连接。
  • 倍数关系:较大的分桶表的桶可以映射到较小分桶表的桶。比如,一个表有8个桶,另一个表有4个桶,每2个小桶可以对应到1个大桶。
表连接查询

分桶表在连接查询时,可以利用表的分桶特性加速查询,尤其是在两个表分桶字段相同时:

SELECT a.*, b.*
FROM stu_info_c AS a
JOIN another_bucketed_table AS b
ON a.id = b.id;

4. 分桶表的创建

假设有以下数据:

1001,lilei,男,18
1002,lucy,女,16
...
创建分桶表
CREATE TABLE stu_info_c (id INT,name STRING,sex STRING,age INT
)
CLUSTERED BY (id) INTO 4 BUCKETS 
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
  • CLUSTERED BY (id): 指定用于分桶的字段,这里是 id。数据在分区内会根据 id 的哈希值进行分桶。

  • INTO 4 BUCKETS: 指定将数据划分为 4 个桶。每个桶包含一部分数据,以便在查询时可以并行处理,提高性能。

加载数据到分桶表
  1. 创建临时表并加载数据
  • 创建临时表:

    CREATE TABLE stu_info_c_tmp (id INT,name STRING,score DECIMAL(5, 2)
    )
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ',';
    
  • 加载数据:

    LOAD DATA INPATH '/bc/stu.txt' INTO TABLE stu_info_c_tmp;
    
  1. 将数据导入分桶表

    INSERT OVERWRITE TABLE stu_info_c SELECT * FROM stu_info_c_tmp;
    

5. 分桶表的查询

查询整张表
SELECT * FROM stu_info_c;
抽样查询
SELECT * FROM stu_info_c TABLESAMPLE(BUCKET 3 OUT OF 8);

TABLESAMPLE(BUCKET x OUT OF y) 用于从分桶表中抽样数据

  • y:决定抽样比例,必须是表总桶数的倍数或因子。

  • x:表示从哪个桶开始抽取。

  • 例如,如果表总共分为 4 个桶,TABLESAMPLE(BUCKET 2 OUT OF 2) 将返回 2 个桶的数据,而 TABLESAMPLE(BUCKET 1 OUT OF 2) 将返回第 1 个桶和第 3 个桶的数据。


6. 分桶与分区的区别

  • 字段来源

    • 分区使用creat以外的新字段。
    • 分桶使用creat之后的已有字段。
  • 划分方式

    • 分区:指定规则(静态、动态)。
    • 分桶:基于哈希算法。
  • 存储方式

    • 分区:创建子目录存储数据。
    • 分桶:将表拆分为多个小文件。
  • 使用场景

    • 分区:加速分区字段查询。
    • 分桶:加速表连接。
特性分区分桶
字段来源新字段(不在原表中)原表中已有字段
划分方式指定规则(静态、动态)基于哈希算法
存储方式创建子目录存储数据将表拆分为多个小文件
使用场景加速分区字段查询加速表连接
语法
CREATE TABLE bucketed_sales (id INT,product STRING,amount DECIMAL(10, 2),date STRING
)
PARTITIONED BY (year INT)
CLUSTERED BY (id) INTO 4 BUCKETS
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';

感谢您访问本博文,另外,在今天这个举国欢庆的日子里,愿大家享受美好的时光,放下工作的繁忙,陪伴家人和朋友,共度温馨的国庆假期。愿祖国繁荣昌盛,国泰民安!祝大家国庆快乐,幸福安康!

相关文章:

Hive数仓操作(八)

一、Hive中的分桶表 1. 分桶表的概念 分桶表是Hive中一种用于提升查询效率的表类型。分桶指的是根据指定列的哈希值将数据划分到不同的文件(桶)中。 2. 分桶表的原理 哈希分桶:根据分桶列计算哈希值,对哈希值取模,将…...

【C++打怪之路Lv6】-- 内存管理

🌈 个人主页:白子寰 🔥 分类专栏:C打怪之路,python从入门到精通,数据结构,C语言,C语言题集👈 希望得到您的订阅和支持~ 💡 坚持创作博文(平均质量分82)&#…...

408知识点自检(二)

一、细节题 边界对齐长度是由什么决定的?64位计算机边界按几字节对齐?单周期cpu、多周期cpu、基本流水线cpu、超标量cpu的cpi分别是多少?中断的处理优先级和响应优先级分别由谁决定?动态分区管理需要用什么重定位方式&#xff1f…...

C语言复习概要(二)

本文目录 C语言中的数组与函数详解1. 引言2. 数组2.1. 什么是数组?语法:示例: 2.2. 数组的初始化示例 1:在声明时初始化示例 2:部分初始化示例 3:运行时赋值 2.3. 数组的访问与修改示例: 2.4. 多…...

小程序原生-利用setData()对不同类型的数据进行增删改

1. 声明和绑定数据 wxml文件 <view> {{school}} </view> <view>{{obj.name}}</view> <view id"{{id}}" > 绑定属性值 </view> <checkbox checked"{{isChecked}}"/> <!--算数运算--> <view>{{ id …...

.NET Core 集成 MiniProfiler性能分析工具

前言&#xff1a; 在日常开发中&#xff0c;应用程序的性能是我们需要关注的一个重点问题。当然我们有很多工具来分析程序性能&#xff1a;如&#xff1a;Zipkin等&#xff1b;但这些过于复杂&#xff0c;需要单独搭建。 MiniProfiler就是一款简单&#xff0c;但功能强大的应用…...

【JAVA开源】基于Vue和SpringBoot的旅游管理系统

本文项目编号 T 063 &#xff0c;文末自助获取源码 \color{red}{T063&#xff0c;文末自助获取源码} T063&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析5.4 用例设计 六、核…...

信息学奥赛一本通 1885:【14NOIP提高组】寻找道路 | 洛谷 P2296 [NOIP2014 提高组] 寻找道路

【题目链接】 洛谷 P2296 [NOIP2014 提高组] 寻找道路 ybt 1885&#xff1a;【14NOIP提高组】寻找道路 【题目考点】 1. 图论&#xff1a;广搜 2. 图论&#xff1a;反图 【解题思路】 设path数组&#xff0c;path[i]表示顶点i出发到终点t是否有路径。 先求path数组&#…...

JVM 基础、GC 算法与 JProfiler 监控工具详解

目录 1、引言 1.1 JVM内存与本地内存 1.2 JVM与JDK的关系 2、JVM基础 2.1 JVM&#xff08;Java Virtual Machine&#xff09; 2.2 Java与JVM的关系 2.3 JVM的内存结构 2.3.1 堆内存 2.3.2 栈内存 2.3.3 方法区 2.3.4 本地方法栈 2.3.5 程序计数器&#xff08;PC寄存…...

nodejs安装及环境配置

一、下载 进入官网https://nodejs.org/en/download/prebuilt-installer下载node.js安装包&#xff0c;选择对应版本的node&#xff0c;这里我选择的是14.21.3版本 二、安装 1、下载完成后&#xff0c;双击“node-v14.21.3-x64.msi”&#xff0c;开始安装Node.js 2、勾选复…...

无人机电力巡检:点亮电力巡检新视野!

一、无人机电力巡查的优势 提高巡检效率&#xff1a;无人机可以搭载高清摄像头、红外热像仪等先进设备&#xff0c;实时拍摄和传输图像&#xff0c;帮助巡检人员快速发现潜在问题&#xff0c;如电线破损、绝缘子污损、设备过热等&#xff0c;从而大大缩短了巡检周期。 降低人…...

详细介绍:API 和 SPI 的区别

文章目录 Java SPI (Service Provider Interface) 和 API (Application Programming Interface) 的区别详解目录1. 定义和目的1.1 API (Application Programming Interface)1.2 SPI (Service Provider Interface) 2. 使用场景2.1 API 的应用场景2.2 SPI 的应用场景 3. 加载和调…...

【面向对象】设计模式概念和分类

零.前提提要 本文章是我考中级软件设计师时的笔记&#xff0c;基本都是一些自己的思路和见解&#xff0c;现记录一下&#xff0c;希望可以帮助到即将考证的同学。 一.面向对象设计模式的概念 二.面向对象的设计模式分类 设计模式确定了所包含的类和实例、他们的角色和写作方式以…...

APK安装包arm64-v8a、armeabi-v7a、x86、x86_64如何区别?(2024年10月1日)

其实就是安卓CPU的进步史 安卓CPU类型: arm64-v8a: 第8代、64位ARM处理器&#xff0c;目前手机大多数是此架构(新手机&#xff0c;可以无脑选择)armeabiv-v7a: 第七代及以上的 ARM 处理器。2011年5月以后生产的大部分安卓设备都使用它armeabi: 第5代、第6代的ARM处理器&#…...

【DataLoom】智能问数 - 自然语言与数据库交互

探索DataLoom的智能问数功能&#xff1a;简化数据库查询 在数据驱动的决策制定中&#xff0c;数据库查询是获取洞察的关键步骤。但是&#xff0c;传统的数据库查询方法往往复杂且技术性强&#xff0c;这限制了非技术用户的使用。DataLoom的智能问数功能正是为了解决这一问题而…...

【Linux】进程地址空间(初步了解)

文章目录 1. 奇怪的现象2. 虚拟地址空间3. 关于页表4. 为什么要有虚拟地址 1. 奇怪的现象 我们先看一个现象&#xff1a; 为什么父子进程从“同一块地址中”读取到的值不一样呢&#xff1f; 因为这个地址不是物理内存的地址 &#xff0c;如果是物理内存的地址是绝对不可能出…...

hdu-6024

hdu-6024 struct node {int x, c;bool operator<(const node &a) const{return x < a.x;} }; // dp[i][0]为到第i个教室且第i个教室不建糖果店的花费前缀和&#xff0c;dp[i][1]为到第i个教室且第i个教室建糖果店的花费前缀和 int dp[N][2]; void solve() {int n;wh…...

jmeter操作数据库

jmeter操作数据库 一、打开数据库 二、jmeter下载驱动&#xff0c;安装jdbc驱动 1、下载好的驱动包 2、将驱动包复制粘贴 存放在包的路径下 &#xff08;1&#xff09;jdk下面 a、路径&#xff1a;jdk1\jre\lib b、jdk1\jre\lib\ext &#xff08;2&#xff09;jmeter下 a、…...

Stable Diffusion绘画 | 如何做到不同动作表情,人物角色保持一致性(上篇)

由于 SD 具有强大的可控性&#xff0c;在固定人物角色方面&#xff0c;SD 是远超 MJ 的&#xff0c; 其中最好用&#xff0c;也是最优先的方法就是训练一个自己专属的角色模型&#xff0c;例如之前使用秋叶训练器得到的 LoRA模型。 另外&#xff0c;如果不想自己训练模型的话…...

中国计量大学《2023年801+2023年819自动控制原理真题》 (完整版)

本文内容&#xff0c;全部选自自动化考研联盟的&#xff1a;《中国计量大学801819自控考研资料》的真题篇。后续会持续更新更多学校&#xff0c;更多年份的真题&#xff0c;记得关注哦~ 目录 2023年801真题 2023年819真题 Part1&#xff1a;2023年完整版真题 2023年801真题…...

从MATLAB验证到FPGA上板:双频信号叠加的完整开发闭环实战

从MATLAB验证到FPGA上板&#xff1a;双频信号叠加的完整开发闭环实战 在数字信号处理领域&#xff0c;实现双频信号的精确叠加是一个常见但极具挑战性的任务。无论是通信系统中的载波调制&#xff0c;还是音频处理中的音效合成&#xff0c;都需要工程师能够准确地在硬件层面实现…...

告别天价桥接芯片!用高云GW5AT-LV15MG132 FPGA搞定MIPI C-PHY摄像头测试盒

国产FPGA革新摄像头测试方案&#xff1a;高云GW5AT-LV15MG132的MIPI C-PHY实战解析 在摄像头模组生产线上&#xff0c;测试环节的成本与效率直接关系到企业竞争力。传统测试方案依赖进口FPGA搭配昂贵桥接芯片&#xff0c;不仅物料清单&#xff08;BOM&#xff09;成本居高不下…...

intv_ai_mk11行业落地:教育机构课件辅助生成、HR招聘文案批量产出案例

intv_ai_mk11行业落地&#xff1a;教育机构课件辅助生成、HR招聘文案批量产出案例 1. 模型能力与行业价值 intv_ai_mk11作为一款基于Llama架构的文本生成模型&#xff0c;在教育培训和人力资源领域展现出独特的实用价值。这个开箱即用的解决方案特别适合需要快速处理大量文本…...

TTL门电路在现代数字设计中的应用:从基础到OC门实战

TTL门电路在现代数字设计中的应用&#xff1a;从基础到OC门实战 在数字电路设计的工具箱里&#xff0c;TTL&#xff08;晶体管-晶体管逻辑&#xff09;门电路就像瑞士军刀一样经典而实用。尽管CMOS技术如今占据主流&#xff0c;但TTL在特定场景下依然展现出独特的优势。特别是在…...

基于SpringBoot+Vue的月度员工绩效考核管理系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】

摘要 现代企业管理中&#xff0c;绩效考核是提升员工工作效率、优化人力资源配置的重要手段。传统的绩效考核多依赖纸质记录或简单的电子表格&#xff0c;存在数据易丢失、统计效率低、反馈周期长等问题。随着信息化技术的发展&#xff0c;企业亟需一套高效、精准的绩效考核管理…...

革新性Koikatu体验增强工具:KK-HF_Patch效率提升指南

革新性Koikatu体验增强工具&#xff1a;KK-HF_Patch效率提升指南 【免费下载链接】KK-HF_Patch Automatically translate, uncensor and update Koikatu! and Koikatsu Party! 项目地址: https://gitcode.com/gh_mirrors/kk/KK-HF_Patch 你是否曾在《Koikatu》游戏中遇到…...

基于Xinference-v1.17.1的嵌入式Linux开发指南

基于Xinference-v1.17.1的嵌入式Linux开发指南 1. 引言 嵌入式设备上的AI推理一直是个技术挑战&#xff0c;特别是在资源受限的环境中部署大模型。Xinference-v1.17.1作为一个开源推理框架&#xff0c;为嵌入式Linux系统提供了轻量级的AI模型部署方案。无论你是想在树莓派上运…...

从零开始:使用VSCode + CMake + Ninja + GCC构建高效MCU开发环境

1. 为什么需要这套开发环境&#xff1f; 作为一名在嵌入式领域摸爬滚打多年的开发者&#xff0c;我深知传统IDE的痛点。记得刚入行时&#xff0c;公司清一色使用某商业IDE&#xff0c;直到某天收到法务部的紧急通知——需要立即处理软件版权问题。这让我意识到&#xff0c;基于…...

VMware Workstation 16开机自启踩坑实录:从环境变量报错到bat脚本优化,一篇搞定

VMware Workstation 16开机自启全攻略&#xff1a;从环境变量到脚本优化的深度实践 每次重启服务器后手动打开虚拟机实在是个体力活。上周我负责维护的测试环境又因为忘记启动虚拟机导致整个团队阻塞了半天&#xff0c;这种低级错误让我决定彻底解决VMware Workstation的开机自…...

Leaf控制台终极指南:实时监控游戏服务器运行状态的完整教程

Leaf控制台终极指南&#xff1a;实时监控游戏服务器运行状态的完整教程 【免费下载链接】leaf A game server framework in Go (golang) 项目地址: https://gitcode.com/gh_mirrors/lea/leaf Leaf控制台是Go语言游戏服务器框架Leaf的强大实时监控工具&#xff0c;为游戏…...