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

hive的分区表和分桶表详解

分区表

Hive中的分区就是把一张大表的数据按照业务需要分散的存储到多个目录,每个目录就称为该表的一个分区。在查询时通过where子句中的表达式选择查询所需要的分区,这样的查询效率会提高很多。

静态分区表基本语法

创建分区表
create table dept_partition
(deptno int,    --部门编号dname  string, --部门名称loc    string  --部门位置
)partitioned by (day string)row format delimited fields terminated by '\t';
写数据:

创建文件写入以下数据并上传到HDFS上面:

10	行政部	1700
20	财务部	1800

在这里插入图片描述

load加载数据:
load data inpath 'hdfs://flinkv1:8020/input/dept_20220401.log'into table dept_partitionpartition(day='20220401');
insert加载数据

将day='20220401’分区的数据插入到day='20220402’分区,可执行如下装载语句

insert overwrite table dept_partition partition (day = '20220402')
select deptno, dname, loc
from dept_partition
where day = '20220401';
读数据

查询分区表数据时,可以将分区字段看作表的伪列,可像使用其他字段一样使用分区字段。

select deptno, dname, loc ,day
from dept_partition
where day = '20220401';

在这里插入图片描述

查看所有分区信息
 show partitions dept_partition;

在这里插入图片描述

增加分区

(1)创建单个分区

alter table dept_partition 
add partition(day='20220403');

在这里插入图片描述

(2)同时创建多个分区(分区之间不能有逗号)

alter table dept_partition 
add partition(day='20220404') partition(day='20220405');

在这里插入图片描述

删除分区

(1)删除单个分区

alter table dept_partition 
drop partition (day='20220403');

在这里插入图片描述

(2)同时删除多个分区(分区之间必须有逗号)

alter table dept_partition 
drop partition (day='20220404'), partition(day='20220405');

在这里插入图片描述

修复分区

Hive将分区表的所有分区信息都保存在了元数据中,只有元数据与HDFS上的分区路径一致时,分区表才能正常读写数据。若用户手动创建/删除分区路径,Hive都是感知不到的,这样就会导致Hive的元数据和HDFS的分区路径不一致。再比如,若分区表为外部表,用户执行drop partition命令后,分区元数据会被删除,而HDFS的分区路径不会被删除,同样会导致Hive的元数据和HDFS的分区路径不一致。
若出现元数据和HDFS路径不一致的情况,可通过如下几种手段进行修复。
(1)add partition

若手动创建HDFS的分区路径,Hive无法识别,可通过add partition命令增加分区元数据信息,从而使元数据和分区路径保持一致。

(2)drop partition

若手动删除HDFS的分区路径,Hive无法识别,可通过drop partition命令删除分区元数据信息,从而使元数据和分区路径保持一致。

(3)msck

若分区元数据和HDFS的分区路径不一致,还可使用msck命令进行修复,以下是该命令的用法说明。

msck repair table table_name [add/drop/sync partitions];

说明::该命令会增加HDFS路径存在但元数据缺失的分区信息。

msck repair table table_name add partitions

该命令会删除HDFS路径已经删除但元数据仍然存在的分区信息。

msck repair table table_name drop partitions

该命令会同步HDFS路径和元数据分区信息,相当于同时执行上述的两个命令。

msck repair table table_name sync partitions

等价于msck repair table table_name add partitions命令。

msck repair table table_name

二级分区表

思考:如果一天内的日志数据量也很大,如何再将数据拆分?答案是二级分区表,例如可以在按天分区的基础上,再对每天的数据按小时进行分区。

二级分区表建表语句
create table dept_partition2(deptno int,    -- 部门编号dname string, -- 部门名称loc string     -- 部门位置
)
partitioned by (day string, hour string)
row format delimited fields terminated by '\t';
数据装载语句
load data inpath 'hdfs://flinkv1:8020/input/dept_20220401.log'into table dept_partition2partition(day='20220401', hour='12');
查询分区数据
select * 
from dept_partition2 
where day='20220401' and hour='12';

在这里插入图片描述

动态分区

动态分区是指向分区表insert数据时,被写往的分区不由用户指定,而是由每行数据的最后一个字段的值来动态的决定。使用动态分区,可只用一个insert语句将数据写入多个分区。

动态分区相关参数

(1)动态分区功能总开关(默认true,开启)

set hive.exec.dynamic.partition=true

(2)严格模式和非严格模式
动态分区的模式,默认strict(严格模式),要求必须指定至少一个分区为静态分区,nonstrict(非严格模式)允许所有的分区字段都使用动态分区。

set hive.exec.dynamic.partition.mode=nonstrict

(3)一条insert语句可同时创建的最大的分区个数,默认为1000。

set hive.exec.max.dynamic.partitions=1000

(4)单个Mapper或者Reducer可同时创建的最大的分区个数,默认为100。

set hive.exec.max.dynamic.partitions.pernode=100

(5)一条insert语句可以创建的最大的文件个数,默认100000。

hive.exec.max.created.files=100000

(6)当查询结果为空时且进行动态分区时,是否抛出异常,默认false。

hive.error.on.empty.partition=false
案例实操

需求:将dept表中的数据按照地区(loc字段),插入到目标表dept_partition_dynamic的相应分区中。
(1)创建目标分区表

create table dept_partition_dynamic(id int, name string
) 
partitioned by (loc int) 
row format delimited fields terminated by '\t';

(2)设置动态分区

set hive.exec.dynamic.partition.mode = nonstrict;
insert into table dept_partition_dynamic 
partition(loc) 
select deptno, dname, loc 
from dept;

(3)查看目标分区表的分区情况

show partitions dept_partition_dynamic;

在这里插入图片描述

分桶表

分区提供一个隔离数据和优化查询的便利方式。不过,并非所有的数据集都可形成合理的分区。对于一张表或者分区,Hive 可以进一步组织成桶,也就是更为细粒度的数据范围划分,分区针对的是数据的存储路径,分桶针对的是数据文件。
分桶表的基本原理是,首先为每行数据计算一个指定字段的数据的hash值,然后模以一个指定的分桶数,最后将取模运算结果相同的行,写入同一个文件中,这个文件就称为一个分桶(bucket)。

分桶表基本语法

(1)建表语句

create table stu_buck(id int, name string
)
clustered by(id) 
into 4 buckets
row format delimited fields terminated by '\t';

(2)数据装载
创建student.txt文件,并输入如下内容,上传HDFS

1001	student1
1002	student2
1003	student3
1004	student4
1005	student5
1006	student6
1007	student7
1008	student8
1009	student9
1010	student10
1011	student11
1012	student12
1013	student13
1014	student14
1015	student15
1016	student16

(2)导入数据到分桶表中
说明:Hive新版本load数据可以直接跑MapReduce,老版的Hive需要将数据传到一张表里,再通过查询的方式导入到分桶表里面。

load data inpath 'hdfs://flinkv1:8020/input/student.txt'into table stu_buck;

(3)查看创建的分桶表中是否分成4个桶
在这里插入图片描述

(4)观察每个分桶中的数据

分桶排序表

(1)建表语句

create table stu_buck_sort(id int, name string
)
clustered by(id) sorted by(id)
into 4 buckets
row format delimited fields terminated by '\t';

(2)数据装载

load data inpath 'hdfs://flinkv1:8020/input/student.txt'into table stu_buck_sort;

相关文章:

hive的分区表和分桶表详解

分区表 Hive中的分区就是把一张大表的数据按照业务需要分散的存储到多个目录,每个目录就称为该表的一个分区。在查询时通过where子句中的表达式选择查询所需要的分区,这样的查询效率会提高很多。 静态分区表基本语法 创建分区表 create table dept_p…...

verilog语法进阶-分布式ram

概述: FPGA的LUT查找表是用RAM设计的,所以LUT可以当成ram来使用,也并不是所有的LUT都可以当成ram来使用,sliceM的ram可以当成分布式ram来使用,而sliceL的ram只能当成rom来使用,也就是只能读,不能写&#x…...

HarmonyOS使用HTTP访问网络

HTTP数据请求 1 概述 日常生活中我们使用应用程序看新闻、发送消息等,都需要连接到互联网,从服务端获取数据。例如,新闻应用可以从新闻服务器中获取最新的热点新闻,从而给用户打造更加丰富、更加实用的体验。 那么要实现这样一种…...

GZ015 机器人系统集成应用技术样题1-学生赛

2023年全国职业院校技能大赛 高职组“机器人系统集成应用技术”赛项 竞赛任务书(学生赛) 样题1 选手须知: 本任务书共 25页,如出现任务书缺页、字迹不清等问题,请及时向裁判示意,并进行任务书的更换。参赛队…...

计算机毕业设计 基于SpringBoot的日常办公用品直售推荐系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...

uniapp:使用fixed定位,iOS平台的安全区域问题解决

manifest.json > 添加节点 "safearea": { //iOS平台的安全区域"background": "#1C1E22","backgroundDark": "#1C1E22", // HX 3.1.19支持"bottom": {"offset": "auto"} },已解决&#xff…...

三层交换机原理与配置

文章目录 三层交换机原理与配置一、三层交换技术概述二、传统的 MLS三、基于CEF 的MLS1、转发信息库(FIB)2、邻接关系表3、工作原理: 四、三层交换机的配置1、三层交换机配置命令2、三层交换机配置步骤 三层交换机原理与配置 一、三层交换技…...

Linux-----5、文件系统

# 文件系统 # 终端的基本操作 ㈠ 打开多个终端 ㈡ 快速清屏 新建标签:command T 新建窗口:command N 关闭标签:command Q 关闭窗口:command W 放大:command 缩小:command - 清屏&#xff…...

电脑自动关机怎么设置?

电脑自动关机怎么设置?如果你是一名上班族,工作忙起来很多事情都会忘记做,有时候忙到很晚后紧急下班,就会忘记给电脑关机,电脑如果经常不关机,那么电脑就会超负荷的运转,大家都知道电脑的寿命是…...

MS5602视频 8 位数模转换器,可替代TLC5602

MS5602 是低功率、超高速视频数模转换器。 MS5602 以 DC 至 20MHz 的采样速率,将数字信号转换成模拟信号。由于高速工作 的特性, MS5602 适合于数字电视、电脑视频处理及雷达信号处 理等数字视频应用。 MS5602 工作在 -40C 至 85C 的温度范围内 …...

Logistic Regression——逻辑回归

1. 为什么需要逻辑回归 在前面学习的线性回归中,我们的预测值都是任意的连续值,例如预测房价。除此之外,还有一个常见的问题就是分类问题,而逻辑回归是一个解决分类问题的模型,其预测值是离散的。 分类问题又包括…...

跟随鼠标动态显示线上点的值(基于Qt的开源绘图控件QCustomPlot进行二次开发)

本文为转载 原文链接: 采用Qt快速绘制多条曲线(折线),跟随鼠标动态显示线上点的值(基于Qt的开源绘图控件QCustomPlot进行二次开发) 内容如下 QCustomPlot是一个开源的基于Qt的第三方绘图库,能…...

Todesk、向日葵等访问“无显示器”主机黑屏问题解决

我的环境是 ubuntu 22.04 安装 要安装 video dummy,请在终端中运行以下命令: sudo apt install xserver-xorg-video-dummy配置 video dummy 的配置文件请自行搜索 使用任何文本编辑器打开此文件。 我的是 /etc/X11/xorg.conf 默认配置文件包含以下内…...

maven打包插件maven-jar-plugin与spring-boot-maven-plugin

maven几种打包插件介绍 文章目录 &#x1f50a;1.spring-boot-maven-plugin打包后效果 &#x1f4d5;2.maven-jar-plugin打包后效果&#x1f58a;️最后总结 &#x1f50a;1.spring-boot-maven-plugin <plugins><plugin><groupId>org.springframework.boot&…...

uniapp微信小程序下载base64图片流或https图片

常规https的图片下载是这样的 const urlPath https://test/logo.png uni.downloadFile({url: urlPath,success(res){// 这时会产生一个临时路径&#xff0c;在应用本次启动期间可以正常使用。if (res.statusCode 200) {// 需要将图片保存到相册uni.saveImageToPhotosAlbum({…...

数据结构 | Log-Structured Merge Tree (LSM Tree)

今天介绍LSM Tree这个数据结构&#xff0c;严格意义上来说&#xff0c;他并不像他的名字一样是一棵树型的数据结构&#xff0c;而更多是一种设计思想。 LSM Tree最先在1996年被提出&#xff0c;后来被广泛运用于现代NoSQL&#xff08;非关系型数据库&#xff09;系统中&#xf…...

QEMU源码全解析 —— virtio(9)

接前一篇文章&#xff1a; 上两回讲解了virtio balloon相关类所涉及的realize函数以及大致流程&#xff0c;如下表所示&#xff1a; realize函数parent_dc_realize函数DeviceClassvirtio_pci_dc_realizePCIDeviceClassvirtio_pci_realizeVirtioPCIClassvirtio_balloon_pci_rea…...

金蝶云星空协同开发环境应用内执行单据类型脚本

文章目录 金蝶云星空协同开发环境应用内执行单据类型脚本业务界面查询单据类型表数据导出数据执行数据库脚本单据类型xml检验是否执行成功检查数据库检查业务数据 金蝶云星空协同开发环境应用内执行单据类型脚本 业务界面 查询单据类型表数据 先使用类型中文在单据类型多语言…...

矩阵理论及其应用邱启荣习题3.5题解

(1) P ( − 1 0 1 − 1 − 1 2 1 1 − 1 ) \begin{pmatrix} -1 & 0&1 \\ -1 & -1&2\\1&1&-1 \end{pmatrix} ​−1−11​0−11​12−1​ ​ A ( 1 0 1 1 1 0 − 1 2 1 ) \begin{pmatrix} 1 & 0&1 \\ 1 & 1&0\\-1&2&1 \end{pmat…...

Java面试题(每天10题)-------连载(49)

目录 Tomcat篇 1、Tomcat的缺省端口是多少&#xff1f;怎么修改&#xff1f; 2、Tomcat有哪几种Connector运行模式&#xff08;优化&#xff09;&#xff1f; 3、Tomcat有几种部署方式&#xff1f; 4、Tomcat容器时如何创建servlet类实例&#xff1f;用到了什么原理&…...

Edge浏览器专属:B站直播实时字幕插件开发全记录(附源码下载)

Edge浏览器实现B站直播实时字幕的技术解析与实战 作为一名长期关注Web语音技术的开发者&#xff0c;我最近在Edge浏览器上成功实现了一个B站直播实时字幕插件。这个项目的核心价值在于解决了无字幕直播场景下的信息获取难题——根据用户反馈&#xff0c;超过68%的观众会在没有字…...

SQLite.Interop.DLL加载失败的3种修复方案 - 从运行库到项目配置全搞定

SQLite.Interop.DLL加载失败的终极解决方案&#xff1a;从运行环境到项目配置深度解析 当你正在开发一个依赖SQLite数据库的C#项目时&#xff0c;突然遇到"无法加载DLLSQLite.Interop.DLL"的错误提示&#xff0c;这绝对是一个令人头疼的问题。作为一名有多年.NET开发…...

别再死记硬背了!用HuggingFace Diffusers库5分钟搞懂Stable Diffusion的VAE、U-Net和CLIP怎么协同工作

5分钟透视Stable Diffusion核心组件&#xff1a;用HuggingFace Diffusers实战VAE/U-Net/CLIP协同机制 当你在HuggingFace Diffusers库中第一次调用StableDiffusionPipeline时&#xff0c;是否好奇过那段简短的文本提示如何变成精美图像&#xff1f;这背后是VAE、U-Net和CLIP三…...

硬核盘点|2026年好用AI论文写作工具榜单,毕业论文免费写还合规

2026 年实测 10 款主流 AI 论文工具&#xff0c;千笔AI以全流程覆盖 语义级降重 免费查重领跑综合榜&#xff1b;ThouPen 稳坐留学生毕业全流程工具头把交椅&#xff1b;免费工具中DeepSeek Scholar、豆包学术版表现亮眼&#xff0c;30 分钟即可生成万字高质量初稿&#xff0…...

LTI系统设计避坑指南:因果性与稳定性在实际工程中的5个关键检查点

LTI系统设计避坑指南&#xff1a;因果性与稳定性在实际工程中的5个关键检查点 在数字信号处理领域&#xff0c;线性时不变&#xff08;LTI&#xff09;系统的设计是工程师日常工作的核心。然而&#xff0c;理论推导与工程实践之间往往存在一道鸿沟——许多在数学上完美的系统模…...

解锁自定义键盘体验:用Vial-QMK打造个性化配置指南

解锁自定义键盘体验&#xff1a;用Vial-QMK打造个性化配置指南 【免费下载链接】vial-qmk QMK fork with Vial-specific features. 项目地址: https://gitcode.com/gh_mirrors/vi/vial-qmk 核心价值&#xff1a;为什么选择Vial-QMK定制键盘&#xff1f; 在机械键盘的世…...

终极指南:如何使用LeetDown轻松降级A6/A7苹果设备系统

终极指南&#xff1a;如何使用LeetDown轻松降级A6/A7苹果设备系统 【免费下载链接】LeetDown a GUI macOS Downgrade Tool for A6 and A7 iDevices 项目地址: https://gitcode.com/gh_mirrors/le/LeetDown LeetDown是一款专为macOS设计的图形化降级工具&#xff0c;能够…...

告别Win11无边框窗口的‘残疾’体验:Qt自定义标题栏完美集成Snap Layout保姆级教程

现代Qt应用开发&#xff1a;Win11无边框窗口与Snap Layout深度整合实战 当微软推出Windows 11时&#xff0c;其标志性的Snap Layout功能彻底改变了多窗口管理体验。然而对于使用Qt框架开发无边框窗口应用的开发者来说&#xff0c;这却带来了一个棘手的问题——自定义标题栏与系…...

so-vits-svc声压级标准化终极指南:如何避免AI语音转换中的音频质量损伤

so-vits-svc声压级标准化终极指南&#xff1a;如何避免AI语音转换中的音频质量损伤 【免费下载链接】so-vits-svc SoftVC VITS Singing Voice Conversion 项目地址: https://gitcode.com/gh_mirrors/so/so-vits-svc so-vits-svc作为当前最先进的AI歌声转换框架&#xff…...

OpenClaw轻量化部署:在树莓派上运行Qwen3.5-9B微型服务

OpenClaw轻量化部署&#xff1a;在树莓派上运行Qwen3.5-9B微型服务 1. 为什么选择树莓派部署OpenClaw 去年夏天&#xff0c;我在整理个人文档时被重复的文件分类工作折磨得苦不堪言。当时我就在想&#xff1a;如果能有个AI助手帮我自动处理这些琐事该多好。但市面上的云端方案…...