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

这篇具有很好参考价值的文章主要介绍了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、创建分区表

CREATE TABLE sales (
    sale_date STRING,
    product STRING,
    amount DOUBLE
)
PARTITIONED BY (sale_year INT, sale_month INT);

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

需要手动指定分区

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、创建分区表

CREATE TABLE sales (
    sale_date STRING,
    product STRING,
    amount DOUBLE
)
PARTITIONED BY (sale_year INT, sale_month INT);

2、实现动态插入

自动把后面两个字段设置为分区字段 sale_year , sale_month

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

总的来说,静态分区性能更好,动态分区更加方便 更加灵活
综合考虑,你可以根据数据的特点、分区值的变化频率、数据加载需求和查询性能等因素来选择适合你的分区方式。在一些情况下,也可以结合使用两种分区方式,以满足不同的数据管理和查询需求。文章来源地址https://www.toymoban.com/news/detail-686458.html

到了这里,关于hive分区表 静态分区和动态分区的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HIVE表数据快速构造(分区表、orc、text)

    引言 当需要在hive数仓中去创建测试表并构造测试数据时,通常需要在安装了hive客户端的服务器环境下,通过执行命令的方式建表。通过在HDFS上上传和加载数据文件的方式来加载数据到hive表中。其中操作算不得多复杂,但比较依赖对环境和命令的熟悉,并且操作不够可视化

    2024年02月16日
    浏览(31)
  • 【DolphinScheduler】datax读取hive分区表时,空分区、分区无数据任务报错问题解决

    最近在使用海豚调度DolphinScheduler的Datax组件时,遇到这么一个问题:之前给客户使用海豚做的离线数仓的分层搭建,一直都运行好好的,过了个元旦,这几天突然在数仓做任务时报错,具体报错信息如下: com.alibaba.datax.common.exception.DataXException: Code:[HdfsReader-08], Description:[您尝

    2024年01月16日
    浏览(51)
  • Hive数据加载方式(load、insert;普通表、分区表)

    介绍 Hive 数据加载方式(insert、load) 基础语法: load data [local] inpath \\\'/opt/module/datas/student.txt\\\' [overwrite] into table student[partition ] 参数说明: 1 load data: 表示加载数据 2 local: 表示从本地加载数据到 hive 表;否则从 HDFS 加载数据到 hive 表 3 inpath: 表示加载数据的路径 相对路径,例如

    2024年02月03日
    浏览(41)
  • 大数据开发之Hive(查询、分区表和分桶表、函数)

    1、查询语句语法 2、书写次序和执行次序 顺序 书写次序 书写次序说明 执行次序 执行次序说明 1 select 查询 from 先执行表与表直接的关系 2 from 先执行表与表直接的关系 on 先执行表与表直接的关系 3 join on 先执行表与表直接的关系 join 先执行表与表直接的关系 4 where 先执行表

    2024年01月17日
    浏览(40)
  • 大数据Doris(四十八):Doris的动态分区示例与查看动态分区表调度情况

    文章目录 Doris的动态分区示例与查看动态分区表调度情况 一、示例

    2024年02月02日
    浏览(30)
  • Hive分区表实战 - 多分区字段

    本实战教程通过一系列Hive SQL操作,演示了如何在大数据环境下创建具有省市分区的大学表,并从本地文件系统加载不同地区的学校数据到对应分区。首先,创建名为 school 的数据库并切换至该数据库;接着,在数据库中定义一个名为 university 的分区表,其结构包括ID和名称两

    2024年01月15日
    浏览(35)
  • HIVE创建分区表

    partitioned by ( c2 string ) # 创建分区 c1跟c2都是字段,但是创建的时候不能写在t2里面,只能写在分区里面(同时select查询的时候,c2的字段也要写在最后面) 要加载数据到分区表,只需在原来的加载数据的语句上增加partition,同时指定分区的字段值即可。 注意:当你退出

    2024年02月15日
    浏览(30)
  • Hive分区表修改(增删)列

    环境:CDH6.3.0,Hive 2.1.1-cdh6.3.0 基础数据分区表test1,包含a,b,c,d共4列加分区列p_day,向其中插入两行数据 表中数据及parquet文件信息如下: test2表直接使用test1表的文件: 修复分区并查询数据 删除test2表的a列,看起来只有通过replace columns实现,但是运行报错,根据官方文档,只

    2023年04月26日
    浏览(65)
  • Hive 分区表和分桶表

    在《Hive 建表语句解析》文章中,建表的时候我们可以使用 PARTITIONED BY 子句和 CLUSTERED BY 子句来创建分区表和分桶表,为什么要创建分区表和分桶表呢?分区表和分桶表有什么区别呢? 1. 为什么分区 在Hive 查询中一般会扫描整个表内容,会消耗很多时间做没必要的工作。有时

    2023年04月23日
    浏览(33)
  • Hive ---- 分区表和分桶表

    Hive中的分区就是把一张大表的数据按照业务需要分散的存储到多个目录,每个目录就称为该表的一个分区。在查询时通过where子句中的表达式选择查询所需要的分区,这样的查询效率会提高很多。 1. 创建分区表 2. 分区表读写数据 1)写数据 (1)load 数据准备 在/opt/module/hiv

    2024年02月10日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包