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

hive:分区>>静态分区,动态分区,混合分区

分区表

使用场景:数据量庞大且经常用来做查询的表

特点:将数据分别存储到不同的目录里

优点:避免全盘扫描,提高查询效率

分区的类型 

它们的默认值分别是: 

false, 

strict, 要求至少有一个静态分区列,而 nonstrict 模式允许所有分区列都是动态的。

1000

100, 在每个 mapper 或 reducer 节点上允许创建的动态分区的最大数量。

注意: set 属性的修改只作用于当前会话

查看Hive中的属性设置

打开Hive命令行界面/Hue

示例>> 静态分区/动态分区

插入文件数据到静态分区(load data)

插入单条数据到静态分区(insert into )

从其他表插入数据到静态分区( insert into )

在 Hive 中,无论是静态分区还是动态分区,创建表时使用的 SQL 语句是相同的。这是因为分区的定义方式在表创建时是统一的,而分区的具体行为(静态或动态)是在数据插入时通过不同的操作来区分的。

静态分区:在插入数据时,分区值是明确指定的

LOAD DATA 命令:

将数据从文件直接加载到 Hive 表中,适用于批量导入数据文件, 文件中的数据必须与表的非分区列匹配

INSERT INTO 命令:

将数据从其他表或直接通过 VALUES 插入到目标表中,适合小规模数据插入或从其他表导入数据。

动态分区:在插入数据时,分区值是根据数据自动生成的

示例>>混合分区

在这个示例中:

  • year 是静态分区列,其值固定为 '2023'

  • date 是动态分区列,其值从 source_table 中动态生成

Hive 分区和 Oracle 分区的区别
oracle 分区字段用的是表内字段;而 hive 分区字段采用表外字段。

临时表

是为数据提供一个临时的存储和转换空间,以便在将数据加载到目标表之前进行必要的处理或验证

完整分区过程

动态分区示例

第一步: 先创建临时表
临时表包含目标表的所有字段及分区字段
第二步: 导入数据到临时表
load data local inpath './data/student2.txt' into table temp_part1;

静态分区示例

创建分区表
创建临时表
临时表需要包含目标表的所有字段( sidnamegenderageacademy)以及分区字段( dt
把数据加载到临时表
把临时表数据加载到目标表

混合分区示例

创建临时表
临时表需要包含目标表的所有字段( sidnamegenderageacademy)以及分区字段( yeardt):
将数据加载到临时表
插入数据到目标表

相关文章:

  • 信通院:政府数字化转型发展研究报告(2024年)
  • 解锁 Java 回调函数:异步编程与事件处理的利器
  • Python实现AWS Fargate自动化部署系统
  • enum class与enum
  • 【Python 学习 / 4】基本数据结构之 字符串 与 集合
  • 【AI】ragflow + ollama + deepseek-r1本地部署后的配置 目的:给AI大模型输入知识,代替模型微调工作
  • npm安装依赖(npm install)时遇到认证错误的解决方案
  • 谐波响应:理论基础与基本操作
  • WPF-数据转换器
  • 【MODIS\VIIRS】h5文件信息查看python代码
  • 连锁企业管理系统的五大核心功能
  • 【Java学习】二维数组
  • 【黑马点评优化】2-Canel实现多级缓存(Redis+Caffeine)同步
  • 使用 Qt 插件和 SQLCipher 实现 SQLite 数据库加密与解密
  • 大模型开发实战篇4:多模态之图片识别
  • 有关计算机的英语单词、短语、句子
  • gozero实现数据库MySQL单例模式连接
  • 人大金仓国产数据库与PostgreSQL
  • Android车机DIY开发之软件篇(十七) Android模拟器移植Automotive
  • DeepSeek R1 本地部署和知识库搭建
  • 印方称所有敌对行动均得到反击和回应,不会升级冲突
  • 习近平向中国人民解放军仪仗队致意
  • 甘肃省政府原副省长赵金云被决定逮捕
  • 正荣地产:前4个月销售14.96亿元,控股股东已获委任联合清盘人
  • 戴维·珀杜宣誓就任美国驻华大使
  • 吴清稳市场稳预期发布会十要点:谈平准基金、股市稳定、公募改革和巴菲特