Hive 插入动态分区表时遇到的一些坑

本文讨论了在Hive中使用动态分区时遇到的问题,包括产生大量小文件和导致OOM的问题。针对这些问题,文章提供了调整参数如`hive.optimize.sort.dynamic.partition`来控制文件数和减少内存压力。此外,还提到了如何通过`distribute by rand()`来减少文件数和解决数据倾斜。最后,分享了控制文件数过多的Hive参数调整方法。
摘要由CSDN通过智能技术生成

Hive 插入动态分区的问题

insert into table xxx partition(xxxx)
select ...

使用动态分区时首先不要忘记的一些配置:

  • 是否开启动态分区 hive.exec.dynamic.partition
  • 动态分区是否使用严格模式 hive.exec.dynamic.partition.mode
  • MR总共可创建最大分区数 hive.exec.max.dynamic.partitions (默认1000)以及当前节点可创建的最大分区数 hive.exec.max.dynamic.partitions.pernode (默认100)

动态分区产生大量小文件

我这里分区表的存储格式是Parquet,insert select方式动态插入动态分区中,按天分区数据量非常大,一天几十G的文件
因为数据量大,而且分区数多,就会起大量map,从而产生大量小文件(map数x分区数)。小文件过多不仅影响查询,NameNode中的元数据信息管理也会受很大影响

insert into table xxx partition(pcol)
select ...
from ...
distribute by(pcol)

这样做

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值