Hive的动态分区与静态分区(区别及详解)

这篇具有很好参考价值的文章主要介绍了Hive的动态分区与静态分区(区别及详解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

静态分区与动态分区的区别:

1、静态分区

2、动态分区


静态分区与动态分区的区别:

  • 静态分区是先把分区表创好,然后手动把数据导入到对应的分区里面去。
  • 静态分区实在编译期间指定分区名
  • 静态分区支持load、insert两种插入方式。
  • 静态分区是用于分区少,分区名可以明确的数据。
  • 动态分区是有一份数据集(2015-2022年的),按照数据集的字段给动态的生成分区。
  • 动态分区实在SQL执行的时候确定的。
  • 动态分区前需打开:set hive.exec.dynamic.partition.mode=nonstrict;
  • 动态分区只能用insert方式。
  • 动态分区通过普通表选出的字段包含分区字段,分区字段放在最后多个分区字段按照分区顺序放置。
    • 比如 [订单编号,订单创建时间,订单详情编号,订单价格,订单配送员...]
    • 订单创建时间(2021-11-12 12:22:49)把这个字段作为分区的字段。2021-11 这个作为分区条件。

面试题:什么时候使用静态分区,什么时候使用动态分区?

1、静态分区

  • 静态分区是指增加数据是需要手动指定具体的分区目录
  • 静态分区的列实在编译时期,通过用户传递列名来决定的
  • 静态分区不管有没有数据都将会创建该分区
//分区的本质就是文件夹
//静态分区实例:
//创建外部分区表 ratings
create external table ratings(
     user_id integer,
     movie_id integer,
     `timestamp` bigint
)partitioned by (rating decimal(2,1))      //decimal(2,1) 两个数字、一位小数
row format delimited
fields terminated by  ','
stored as textfile;

//查看表ratings定义
desc formatted ratings;

//静态分区数据挂载
//手动加载数据到分区表中,静态分区一次只能操作一个
load data local inpath '/root/kb18/ratings_5.0.csv'
    into table ratings partition (rating=5.0);

select * from ratings limit 20;
  • HDFS在你指定数据库下,即会存在 ratings/rating=5的文件。

2、动态分区

  • 动态分区增加数据时不用手动指定分区目录,而是由系统通过数据来进行判断。
  • 动态分区实在SQL执行的时候确定的。
  • 动态分区是有结果集将创建分区,否则不创建。
  • 动态分区虽然方便快捷,但创建太多分区时可能会占用大量资源。
//动态分区实例:
//创建外部分区表ods_ratings

create external table ods_ratings
(
    user_id     integer,
    movie_id    integer,
    rating      decimal(2, 1),
    `timestamp` bigint
)
    row format delimited
        fields terminated by  ','
    stored as textfile
    location '/kb18/hive/ratings_dir'                   //数据存在hdfs路径
    tblproperties ("skip.header.line.count"="1");       //除去首行


select * from ods_ratings limit 10;

//查看模式 默认为strict 此模式不支持动态分区
set hive.exec.dynamic.partition.mode;
//设置为nonstrict
set hive.exec.dynamic.partition.mode=nonstrict;

//写入表 指定分区字段为rating
insert overwrite table ratings partition(rating)
select user_id,movie_id,`timestamp`,rating from ods_ratings;
  • HDFS上生成分区表:
  • Hive的动态分区与静态分区(区别及详解)

 文章来源地址https://www.toymoban.com/news/detail-407037.html

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

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

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

相关文章

  • Hive 分区表 (Partitioned Tables) 『 创建分区表 | CRUD分区 | 修复分区 | 数据导入(静态分区、动态分区) | 查询数据/表结构』

    条件:假如现有一个角色表 t_all_hero ,该表中有6个清洗干净的互不干扰的数据文件:射手、坦克、战士、法师、刺客、辅助 要求:查找出名字为射手且生命值大于6000的角色人数 惯性解决方法:按照MySQL思维很容易想到 问:如何提高效率?这样虽然能够解决问题,但是由于要

    2024年02月04日
    浏览(58)
  • Java 代理模式详解,静态代理与动态代理的区别及优缺点

    代理模式是一种常用的设计模式,它允许通过引入一个代理对象来控制对目标对象的访问。在Java中,代理模式被广泛应用,它可以提供额外的功能,如权限检查、缓存、日志记录等,同时还能在不修改目标对象的情况下对其进行扩展。 代理模式(Proxy Pattern)是指通过代理对象

    2024年02月11日
    浏览(27)
  • 详解Linux下静态库/动态库的生成和使用(含代码示例和操作流程)&&动态库和静态库的区别

    关于gcc的使用方法可以参考下方链接博客: Linux下详解gcc编译过程(含代码示例) gcc使用教程 库是一种组件技术。 库里封装了数据和函数,提供给用户程序调用。 库只执行到第三阶段编译,没有链接。 库的使用可以使程序模块化,提高程序的编译速度,实现代码复用。

    2024年02月15日
    浏览(28)
  • Hive 动态分区以及分区以及中文分区字段

    hive 提供了一个动态分区功能,其可以基于查询参数的位置去推断分区的名称,从而建立分区。 1.1 主要配置参数 以下为 Hive 动态分区涉及的配置参数: 1.2 调优相关参数 动态分区相关的调优参数: 2.1 准备数据 以下为准备数据的步骤,以及数据中的内容。 2.2 创建分区表 以

    2024年02月04日
    浏览(30)
  • hive 动态分区-动态分区数量太多也会导致效率下降&只设置非严格模式也能执行动态分区

    在非严格模式下 不开启动态分区 的功能的参数(配置如下),同样也能进行动态分区数据写入,目测原因是不严格检查SQL中是否指定分区或者多分区。 动态分区数量太多也会导致效率下降 ,合理设置分区数,可以提高任务执行效率。 背景 目前所使用的集群规模3000c+20TB+3

    2024年02月11日
    浏览(24)
  • educoder中Hive -- 索引和动态分区调整

    第1关:Hive -- 索引 第2关:Hive -- 动态分区调整

    2024年02月04日
    浏览(26)
  • Hive动态分区和分桶使用场景和使用方法

            按照数据表的某列或某些列分为多个分区,分区从形式上可以理解为文件夹,比如我们要收集某个大型 网站的日志数据,一个网站每天的日志数据存在同一张表上,由于每天会生成大量的日志,导致数据表 的内容巨大,在查询时进行全表扫描耗费的资源非常多。那

    2024年02月04日
    浏览(36)
  • hive插入动态分区数据时,return code 2报错解决

    目录 一、完整报错 二、原因         2.1、动态分区问题         2.2、语句占用内存问题 三、其他 一、完整报错         Error while processing statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask 二、原因         2.1、动态分区问题         大概

    2024年02月08日
    浏览(34)
  • Hive-分区与分桶详解(超详细)

    本文将介绍Hive中的两个重要概念:分区和分桶。在大数据处理场景下,通过合理地使用分区和分桶可以提高查询性能、管理灵活性以及支持更多的数据操作。 在Hive中,分区是将表的数据 按照某个列的值 进行划分和存储的一种方式。通过分区,可以将数据按照特定的维度进

    2024年04月14日
    浏览(33)
  • 【Hive大数据】Hive分区表与分桶表使用详解

    目录 一、分区概念产生背景 二、分区表特点 三、分区表类型 3.1 单分区 3.2 多分区

    2024年02月03日
    浏览(33)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包