hive分区表 静态分区和动态分区

一、静态分区

现有数据文件 data_file 如下:

2023-08-01,Product A,100.0

2023-08-05,Product B,150.0

2023-08-10,Product A,200.0

1、创建分区表

sql 复制代码
CREATE TABLE sales (
    sale_date STRING,
    product STRING,
    amount DOUBLE
)
PARTITIONED BY (sale_year INT, sale_month INT);

2、加载数据文件到分区表中

sql 复制代码
LOAD DATA INPATH '/path/to/data_file'
INTO TABLE sales
PARTITION (sale_year=2023, sale_month=8);

二、动态分区

现有源数据表如下:

CREATE TABLE sales_source (

sale_date STRING,

product STRING,

amount DOUBLE

);

INSERT INTO sales_source VALUES

('2023-08-01', 'Product A', 100.0),

('2023-08-05', 'Product B', 150.0),

('2023-08-10', 'Product A', 200.0),

('2023-08-12', 'Product C', 120.0),

('2023-08-15', 'Product B', 180.0);

1、创建分区表

sql 复制代码
CREATE TABLE sales (
    sale_date STRING,
    product STRING,
    amount DOUBLE
)
PARTITIONED BY (sale_year INT, sale_month INT);

2、实现动态插入

sql 复制代码
INSERT INTO sales PARTITION (sale_year, sale_month)
SELECT sale_date, product, amount, YEAR(sale_date), MONTH(sale_date)
FROM sales_source
WHERE sale_date BETWEEN '2023-08-01' AND '2023-08-15';

三、总结

动态分区:

在动态分区中,分区值是根据插入的数据动态计算得出的 ,无需事先创建分区目录。这样的分区方式更加灵活,适用于数据分布不确定或分区值频繁变化的情况。动态分区操作通常会涉及到 MapReduce 任务。

静态分区:

在静态分区中,你在创建表时预先定义了分区值,并手动创建了相应的分区目录。这意味着你需要为每个可能的分区值手动创建一个目录,然后将数据加载到这些目录中。静态分区需要事先知道数据应该放置在哪些分区中,适用于在创建表时已经确定分区结构的情况。

二者的使用场景:

静态分区的使用场景:

  1. 已知分区值: 当数据的分区值在创建表时已经确定,并且不太可能频繁变化时,静态分区是一个较好的选择。

  2. 精确控制和性能: 静态分区允许你精确地控制数据的存储位置,以及在查询时可能提供更好的性能,尤其在大量数据的情况下。

  3. 预先加载: 如果你有大量数据需要加载,并且已经知道数据应该放置在哪些分区中,可以提前创建分区目录,然后一次性加载数据。

动态分区的使用场景:

  1. 未知分区值: 当分区值在插入数据时才能确定,或者可能频繁变化时,动态分区提供了更大的灵活性。

  2. 自动计算分区值: 动态分区可以自动计算分区列的值,避免了手动计算和指定的麻烦。

  3. 灵活性: 如果需要从另一个表或外部数据源选择数据并插入到分区表中,动态分区可以更方便地进行批量操作。

  4. 减少手动操作: 动态分区减少了手动创建分区目录的需求,使数据加载过程更自动化。

总的来说,静态分区性能更好,动态分区更加方便 更加灵活

综合考虑,你可以根据数据的特点、分区值的变化频率、数据加载需求和查询性能等因素来选择适合你的分区方式。在一些情况下,也可以结合使用两种分区方式,以满足不同的数据管理和查询需求。

相关推荐
William Dawson1 天前
【踩坑实录|Hive1\.2\.1数据服务接口5大疑难问题调试与全方位优化方案】
java·hive·spring boot
hopsky1 天前
数据架构与商业智能
数据仓库·bi
APItesterCris3 天前
Open Claw 实战教程:5 分钟搭建京东商品自动化监控与数据分析系统
大数据·运维·数据库·数据仓库·自动化
RestCloud5 天前
ETL、ELT、CDC区别详解,2026数据集成模式选型指南与落地实战
数据仓库·etl·cdc·数据同步·数据集成平台·实时数据同步·elt
江晓鱼未暖5 天前
十七、Redis 核心原理与架构详解
大数据·数据库·数据仓库·redis·缓存·架构
l1t5 天前
DeepSeek总结的上下文理应归属于数据仓库
数据仓库
牛奶咖啡138 天前
大数据Hadoop运维应用实践——HIVE与Hadoop实现整合_Hive的配置安装与使用
大数据·hive·hive的配置与安装·metastore服务的配置·hiveserver2服务配置·hive的常用sql操作·beeline的使用
Y38153266210 天前
3 种 SERP 数据 ETL 方案对比:实时 / 定时 / 流式
数据仓库·etl
向夏威夷 梦断明暄10 天前
基于Tez引擎的 Hive SQL 性能优化
hive·sql·性能优化
这个DBA有点耶11 天前
交易型数据库是什么?OLTP核心能力与2026选型指南
数据库·数据仓库·sql·database·数据库架构·olap·dba