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)
这样做