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

Hive---分区表和分桶表

分区表和分桶表

文章目录

  • 分区表和分桶表
  • 分区表
    • 语法
      • 加载数据
      • 增加分区
      • 删除分区
      • 查看分区表有多少分区
      • 查看分区表结构
    • 动态分区
    • 开启动态分区功能(默认 true,开启)
      • 设置为非严格模式
      • 在所有执行 MR 的节点上,最大一共可以创建多少个动态分区。默认 1000
      • 在每个执行 MR 的节点上,最大可以创建多少个动态分区。
      • 整个 MR Job 中,最大可以创建多少个 HDFS 文件。默认 100000
      • 当有空分区生成时,是否抛出异常
  • 分桶表
    • 创建分桶表
    • 查看表结构
    • 导入数据
    • 分桶规则
  • 区别


分区表

分区表实际上就是对应一个 HDFS 文件系统上的独立的文件夹,该文件夹下是该分区所有的数据文件。
Hive 中的分区就是分目录,把一个大的数据集根据业务需要分割成小的数据集。在查询时通过 WHERE 子句中的表达式选择查询所需要的指定的分区,这样的查询效率会提高很多,所以我们需要把常常用在 WHERE 语句中的字段指定为表的分区字段。
这样查询时只要扫描需要的文件即可

语法

create table dept_partition(
deptno int, dname string, loc string
)
partitioned by (day string)
row format delimited fields terminated by '\t';

注意:分区字段不能是表中已经存在的数据,可以将分区字段看作表的伪列。

加载数据

load data local inpath '/opt/text.txt' into table dept_partition partition(field=xxxx);

注意:分区表加载数据时,必须指定分区

增加分区

增加单个

alter table dept_partition add partition(field=xxxx);

增加多个(无逗号)

alter table dept_partition add partition(field=xxxx) partition(field=yyyy);

删除分区

删除单个

alter table dept_partition drop partition (field=xxxx);

删除多个(有逗号

alter table dept_partition drop partition (field=xxxx), partition(field=yyyy);

查看分区表有多少分区

show partitions dept_partition;

查看分区表结构

desc formatted dept_partition;

动态分区

关系型数据库中,对分区表 Insert 数据时候,数据库自动会根据分区字段的值,将数据插入到相应的分区中,Hive 中也提供了类似的机制,即动态分区(Dynamic Partition),只不过,使用 Hive 的动态分区,需要进行相应的配置。

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

set hive.exec.dynamic.partition=true;

设置为非严格模式

动态分区的模式,默认 strict,表示必须指定至少一个分区为静态分区,nonstrict 模式表示允许所有的分区字段都可以使用动态分区。

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

在所有执行 MR 的节点上,最大一共可以创建多少个动态分区。默认 1000

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

在每个执行 MR 的节点上,最大可以创建多少个动态分区。

该参数需要根据实际的数据来设定。比如:源数据中包含了一年的数据,即 day 字段有365 个值,那么该参数就需要设置成大于 365,如果使用默认值 100,则会报错。

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

整个 MR Job 中,最大可以创建多少个 HDFS 文件。默认 100000

set hive.exec.max.created.files=100000;

当有空分区生成时,是否抛出异常

一般不需要设置。默认 false

set hive.error.on.empty.partition=false;

分桶表

分区提供一个隔离数据和优化查询的便利方式。不过,并非所有的数据集都可形成合理的分区。对于一张表或者分区,Hive 可以进一步组织成桶,也就是更为细粒度的数据范围划分。分桶是将数据集分解成更容易管理的若干部分的另一个技术。
分区针对的是数据的存储路径,分桶针对的是数据文件。

创建分桶表

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

查看表结构

desc formatted stu_buck;

导入数据

load data inpath '/student.txt' into table stu_buck;

分桶规则

Hive 的分桶采用对分桶字段的值进行哈希,然后除以桶的个数求余的方式决定该条记录存放在哪个桶当中

(1)reduce 的个数设置为-1,让 Job 自行决定需要用多少个 reduce 或者将 reduce 的个数设置为大于等于分桶表的桶数
(2)从 hdfs 中 load 数据到分桶表中,避免本地文件找不到问题
(3)不要使用本地模式

区别

分区表是指按照数据表的某列或某些列分为多个区,区从形式上可以理解为文件夹。
分桶是相对分区进行更细粒度的划分。分桶将整个数据内容按照某列属性值的hash值进行区分,如果按照name 属性分为3个桶,就是对name属性值的hash值对3取模,按照取模结果对数据分桶。如取模结果为0的数据记录存放到一个文件,取模为1的数据存放到一个文件,取模为2的数据存放到一个文件。

从表现形式形式上

分区表是一个目录,分桶表是文件。

从创建语句上

分区表使用partitioned by 子句指定,以指定字段为伪列,需要指定字段类型。

分桶表由clustered by 子句指定,指定字段为真实字段,需要指定桶的个数。

从数量上

分区表的分区个数可以增长,分桶表一旦指定,不能增长。

作用上

分区避免全表扫描,根据分区列查询指定目录提高查询速度

分桶保存分桶查询结果的分桶结构(数据已经按照分桶字段进行了hash散列)

分桶表数据进行抽样和join时可以提高MR程序效率

相关文章:

Hive---分区表和分桶表

分区表和分桶表 文章目录分区表和分桶表分区表语法加载数据增加分区删除分区查看分区表有多少分区查看分区表结构动态分区开启动态分区功能(默认 true,开启)设置为非严格模式在所有执行 MR 的节点上,最大一共可以创建多少个动态分…...

C++ STL

1. 什么是STLSTL(standard template libaray-标准模板库):是C标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。通俗来说:将常见的数据结构(顺序表、链表、栈、队列、堆。。。…...

java程序员要了解的sql语句优化技巧大全

sql语句规范 MySQL在Linux系统下数据库名,表名,存储过程名,函数名称,触发器名称等区分大小写,列名不区分大小写,原因是这些操作系统下文件名称区分大小写。 MySQL在Windows系统下全部不区分大小写&#xf…...

SQL零基础入门学习(十)

SQL零基础入门学习(九) SQL CREATE DATABASE 语句 CREATE DATABASE 语句用于创建数据库。 SQL CREATE DATABASE 语法 CREATE DATABASE dbname;SQL CREATE DATABASE 实例 下面的 SQL 语句创建一个名为 “my_db” 的数据库: CREATE DATAB…...

Pytorch从零开始训练模型【识别数字模型】并测试

1 准备数据集 import torch import torchvision # 去网上下载CIFAR10数据集【此数据集为经典的图像数字识别数据集】 # train True 代表取其中得训练数据集; # transform 参数代表将图像转换为Tensor形式 # download 为True时会去网上下载数据集到指定路径【root】…...

Leetcode DAY 44: 完全背包 and 零钱兑换 II and 组合总和 Ⅳ

完全背包518. 零钱兑换 II&#xff01;&#xff01;&#xff01;程序未通过原因&#xff1a; 1、dp数组的初始化没考虑清楚 2、组合问题 dp数组的更新没考虑清楚 修改后&#xff1a; class Solution { public:int change(int amount, vector<int>& coins) {// dp[j…...

谷歌搜索留痕的技术公式【2023年新版】

本文主要分享谷歌搜索留痕的技术公式&#xff0c;让你更简单的去学习谷歌留痕的技术原理 本文由光算创作&#xff0c;有可能会被修改和剽窃&#xff0c;我们佛系对待这样的行为吧。 谷歌搜索留痕的技术公式是什么&#xff1f; 答案是&#xff1a;需要做排名的关键词海量能搜…...

2023财年Q4业绩继续下滑,ChatGPT能驱动英伟达重回巅峰吗?

近年来&#xff0c;全球科创风口不断变换&#xff0c;虚拟货币、元宇宙等轮番登场&#xff0c;不少企业匆忙上台又很快谢幕&#xff0c;但在此期间&#xff0c;有些企业扮演淘金潮中“卖水人”的角色&#xff0c;却也能够见证历史且屹立不倒。不过&#xff0c;这并不意味着其可…...

博客管理系统--项目说明

项目体验地址&#xff08;账号&#xff1a;123&#xff0c;密码&#xff1a;123&#xff09;http://120.53.20.213:8080/blog_system/login.html项目码云Gitee地址&#xff1a;https://gitee.com/GoodManSS/project/tree/master/blog_system&#xff08;一&#xff09;准备工作…...

一文带你了解MySQL的Server层和引擎层是如何交互的?

对于很多开发小伙伴来说&#xff0c;每天写SQL是必不可少的一项工作。 那不知道大家有没有深入了解过&#xff0c;当我们的一条SQL命令被执行时&#xff0c;MySQL是如何把数据从硬盘/内存中查出来并展示到用户面前的呢&#xff1f; 其实&#xff0c;MySQL也没有大家想象的那么…...

CVNLP 常用数据集语料库资源汇总

​ 深度学习常用数据集汇总CVClassificationNLPSentiment AnalysisText ClassificationDialogue Generation其他AudioMulti-ModalClassificationSearch & MatchingImage CaptioningVisualQATri-Modal其他CV ghcnclimate_sphereModelNet40Shrec17 data labelcosmo Spherica…...

lisp 表达式求值规则

lisp 表达式求值规则 一个要求值的 lisp 对象被称为lisp表达式&#xff08;form&#xff09;。 lisp 表达式分三种 1. 自求值表达式。前面说过数字、字符串、向量都是自求值表达式。还有两个特殊的符号 t 和 nil 也可以看成是自求值表达式。 2. 符号表达式。符号的求值…...

Sophos Firewall OS (SFOS) 19.5 MR1 - 同步下一代防火墙

Sophos Firewall OS (SFOS) 19.5 MR1 - 同步下一代防火墙 请访问原文链接&#xff1a;https://sysin.org/blog/sfos-19-5/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;www.sysin.org Sophos Firewall v19.5 现已推出 Sophos Firewall…...

为什么很多人转行IT考虑后端开发Java?

顺应互联网时代发展的选择 在计算机广泛运用于社会的各个角落的今天&#xff0c;选择学习一门计算机语言真的很不错&#xff0c;它会让你的生活从此与众不同。软件渗透到组织的运营和管理的后台之中&#xff0c;形成了组织运营支撑平台。这种形态是传统软件的重要应用场景。在…...

WebDAV之π-Disk派盘+Cloud Player

Cloud Player 支持WebDAV方式连接π-Disk派盘。 推荐一款云媒体播放器是存储在常见云平台中的内容的通用播放器。 Cloud Player云媒体播放器是存储在常见云平台中的内容的通用播放器,无需将其下载到设备。支持以下云平台:Google Drive、DropBox、One Drive、WebDav等。此外,…...

Python-datetime、time包常用功能汇总

目录基础知识时间格式有哪些&#xff1f;Python中的时间格式化时间戳datetimedatedatetimetimedeltatime常用获取今天凌晨字符串&#xff1f;将一个时间格式的字符串转为时间戳将一个时间戳转为指定格式的字符串全部代码参考基础知识 时间格式有哪些&#xff1f; 「格林威治标…...

Spring MVC 源码- HandlerAdapter 组件(四)之 HandlerMethodReturnValueHandler

HandlerAdapter 组件HandlerAdapter 组件&#xff0c;处理器的适配器。因为处理器 handler 的类型是 Object 类型&#xff0c;需要有一个调用者来实现 handler 是怎么被执行。Spring 中的处理器的实现多变&#xff0c;比如用户的处理器可以实现 Controller 接口或者 HttpReques…...

2023面试必备:web自动化测试POM设计模式详解

1.背景 为UI页面写自动化测试用例时&#xff08;如&#xff1a;web自动化、app自动化&#xff09;&#xff0c;使用普通的线性代码&#xff0c;测试用例中会存在大量的元素定位及操作细节&#xff0c;当UI界面变化时&#xff0c;测试用例也要跟着变化&#xff0c;在自动化测试…...

【人工智能 AI】Robotic Process Automation (RPA) 机器人流程自动化 (RPA)

目录 ROBOTIC PROCESS AUTOMATION SERVICES机器人流程自动化服务 What is RPA? 什么是机器人流程自动化?...

ubuntu/linux系统知识(37)systemd管理临时文件的方法systemd-tmpfiles

1、systemd-tmpfiles Linux产生大量的临时文件和目录&#xff0c;例如/tmp、/run 。systemd提供了一个结构化的可配置方法来管理临时文件和目录&#xff0c;即systemd-tmpfiles工具和配套的几个服务&#xff0c;以实现创建、删除和管理临时文件。 systemd创建了几个调用syste…...

3大核心突破:解密m4s-converter如何实现B站缓存视频的智能重生

3大核心突破&#xff1a;解密m4s-converter如何实现B站缓存视频的智能重生 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾面对B站缓存目…...

用STM32F103做个智能门禁卡管理终端:RC522读卡、OLED菜单、4x4键盘改密码,附工程源码

基于STM32F103的智能门禁终端开发实战&#xff1a;从模块整合到系统优化 在物联网设备开发领域&#xff0c;将多个功能模块整合为一个稳定可靠的终端系统是开发者常面临的挑战。本文将深入探讨如何基于STM32F103RCT6微控制器构建一个功能完善的智能门禁管理终端&#xff0c;涵盖…...

避坑指南:Volcano负载感知重调度实战,解决K8s节点负载不均问题

Volcano负载感知重调度实战&#xff1a;解决Kubernetes节点资源冷热不均的终极方案 凌晨三点&#xff0c;告警铃声刺破运维室的宁静——某电商大促期间&#xff0c;Kubernetes集群中三个节点CPU飙升至95%&#xff0c;而其他节点利用率不足20%。这种典型的"热点"现象不…...

FanControl终极指南:如何免费掌控电脑风扇,告别噪音困扰

FanControl终极指南&#xff1a;如何免费掌控电脑风扇&#xff0c;告别噪音困扰 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHu…...

Proteus仿真跑通了,实物电路为啥不亮?C51单片机驱动LED的5个硬件避坑指南

Proteus仿真成功但实物电路不亮&#xff1f;C51单片机驱动LED的5个硬件避坑指南 当你第一次在Proteus中看到LED按照预期闪烁时&#xff0c;那种成就感难以言表。然而&#xff0c;这种喜悦往往在转向实物搭建时戛然而止——电路板上的LED要么纹丝不动&#xff0c;要么常亮不灭&a…...

从ARXML文件反推软件架构:一个ComM模块的配置实例如何映射到你的C代码

从ARXML到C代码&#xff1a;ComM模块配置的逆向工程实战 当你第一次打开ComM_Cfg_SWCD.arxml文件时&#xff0c;那些层层嵌套的XML标签是否让你感到无从下手&#xff1f;作为AUTOSAR开发中最关键的配置文件之一&#xff0c;ARXML实际上是一张精确的"施工图纸"&#x…...

AI赋能运维:基于快马平台打造智能域名故障诊断与修复建议助手

最近在维护公司网站时遇到了新老域名切换导致的访问故障&#xff0c;传统排查流程需要手动分析日志、逐个测试可能原因&#xff0c;效率很低。这次尝试用InsCode(快马)平台的AI能力搭建了一个智能诊断工具&#xff0c;效果超出预期。分享下具体实现思路和关键环节&#xff1a; …...

效率倍增器:利用快马AI自动生成网络设备批量巡检与健康报告脚本

最近在深圳做网络运维的朋友跟我吐槽&#xff0c;每天要手动巡检几十台网络设备&#xff0c;检查CPU、内存、接口状态这些指标&#xff0c;不仅耗时还容易出错。于是我尝试用InsCode(快马)平台帮他解决这个问题&#xff0c;效果出奇的好。今天就把这个自动化巡检脚本的实现过程…...

对比实验:Lychee模型与传统算法在推荐系统中的表现

对比实验&#xff1a;Lychee模型与传统算法在推荐系统中的表现 1. 实验设计与方法 为了客观评估Lychee多模态重排序模型在推荐系统中的实际效果&#xff0c;我们设计了一套完整的对比实验方案。实验聚焦电商推荐场景&#xff0c;选取了家居、服饰、电子产品三个典型品类&…...

VibeVoice API接口调用案例:WebSocket流式通信实测

VibeVoice API接口调用案例&#xff1a;WebSocket流式通信实测 1. 项目概述 VibeVoice 是一个基于微软开源模型的实时语音合成系统&#xff0c;能够将文本内容快速转换为高质量的语音输出。这个系统特别适合需要实时语音交互的应用场景&#xff0c;比如语音助手、有声读物制作…...