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. 减少手动操作: 动态分区减少了手动创建分区目录的需求,使数据加载过程更自动化。

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

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

相关推荐
躺柒3 小时前
读数据架构知识体系指南14数据编织
大数据·数据仓库·数据分析·数据湖·数据编织
卷毛迷你猪8 小时前
快速实验篇(B12)异常流量与刷单识别(方法论演示)
大数据·hive·hadoop·数据挖掘·聚类
卷毛迷你猪1 天前
快速实验篇(B07 )Session 会话化与序列
大数据·hive·hadoop
卷毛迷你猪1 天前
快速实验篇(B08)搜索词分析实战
大数据·hive·hadoop
一隅论数智1 天前
给AI Agent一颗“私域大脑“:本体增强的工程化之路
大数据·运维·数据仓库·人工智能·笔记·学习·政务
卷毛迷你猪1 天前
快速实验篇(B10)品类共现与关联规则实战
大数据·hive·hadoop
卷毛迷你猪1 天前
快速实验篇(B09)城市维度分析,均匀随机字段的识别与证明
大数据·hive·hadoop
卷毛迷你猪2 天前
快速实验篇(B06)页面单跳转化率
大数据·hive·hadoop
卷毛迷你猪3 天前
快速实验篇(B02)DWD 生产级升级
大数据·hive·hadoop
卷毛迷你猪3 天前
快速实验篇(B03) 用户行为漏斗与转化率
大数据·hive·hadoop