hive静态分区和动态分区

本文介绍了Hive的静态分区和动态分区。静态分区需手动指定,适合不需回刷数据的情况,而动态分区根据数据动态分区,适用于需要回刷历史数据的场景。静态分区不允许主分区采用动态列,动态分区则可以灵活插入多天数据。示例展示了静态和动态分区的使用情况。
摘要由CSDN通过智能技术生成

目录

一:静态分区和动态分区介绍

二:静态分区和动态分区区别

三:样例

四:动态分区参数


一:静态分区和动态分区介绍

1、静态分区与动态分区的主要区别在于静态分区是手动指定,而动态分区是通过数据来进行判断。详细来说,静态分区的列实在编译时期,通过用户传递来决定的;动态分区只有在SQL执行时才能决定。

  • 静态分区:分区是指定的一个固定值

  • 动态分区:分区根据读入的值动态写(可理解为变量形式)

  • 静态分区的表不能被加到动态分区里,可以增加新的分区但是只对后来加入的新数据有意义,已经写入数仓的文件不能被重新分区了,只能重写!

2、Hive分区是在创建表的时候用Partitioned by 关键字定义的,但要注意,Partitioned by子句中定义的列是表中正式的列,但是Hive下的数据文件中并不包含这些列,因为它们是目录名。

  • 注意,动态分区不允许主分区采用动态列而副分区采用静态列,这样将导致所有的主分区都要创建副分区静态列所定义的分区:

  • 可以理解为主分区为一个目录,然后在主分区的目录里面又创建了一个目录,且主分区的一个目录下只有一个目录,理解为多此一举

二:静态分区和动态分区区别

比如要新建一个增量表(inc),也不需要回刷数据,只涉及到一天的数据,那么选择静态分区,每天一个分区就好,新建的时候选择pt_dt作为分区键,进行分区设计

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值