Hive动态分区静态分区

本文介绍了Hive的分区概念,包括静态分区(SP)和动态分区(DP)。静态分区在创建时需要预先指定,而动态分区可根据数据自动创建分区。在生产环境中,动态分区常用于加载历史数据。文章强调了分区使用注意事项,指出过多分区可能带来性能压力和元数据管理问题,并建议尽量避免大量动态分区,因为这可能导致分区数量过多,增加服务器负担。此外,还讨论了Hive的严格模式,旨在防止恶意SQL操作。
摘要由CSDN通过智能技术生成

简述:分区是hive存放数据的一种方式,将列值作为目录来存放数据,就是一个分区,可以有多列。

这样查询时使用分区列进行过滤,只需根据列值直接扫描对应目录下的数据,不扫描不关心的分区,快速定位,提高查询效率。

hive的分区有两种类型:

  • 静态分区SP(Static Partitioning)
  • 动态分区DP(Dynamic Partitioning)

对于静态分区,表的分区数量和分区值是固定的。新增分区或者是加载分区数据时,需要提前指定分区名。

对于动态分区,分区的值是不确定的,会根据数据自动的创建新的分区。

1.对于静态分区而言分区一开始就是规定好的,包括插入的时候都是根据自己写的东西进行插入。

2.所谓动态分区,分区的值是不确定的,分区的数量是不确定,皆由加载数据确定。
生产环境中,动态分区一般常用于创建新表后,需要一次性加载历史数据。

生产环境中,动态分区一般常用于创建新表后,需要一次性加载历史数据。(本人遇到过)。

且在插入的过程中动态分区还会报错,大概的意思是需要至少一个分区,但是对于全量插入一个表来说一个一个的分区插入属实麻烦,所以进行插入的时候要运行下列代码。

set hive.exec.dynamic.partition=true;
-- 允许所有的分区字段都可以使用动态分区,兼容严格模式
-- 更改动态分区模式为非严格模式
set hive.exec.dynamic.partition.mode=nonstr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值