2023年11月26日发(作者:)

Hive】如何对Hive表⼩⽂件进⾏合并

0、前⾔

HDFS不适合⼤量⼩⽂件的存储,因namenode将⽂件系统的元数据存放在内存中,因此存储的⽂件数⽬受限于 namenode的内存⼤⼩。

HDFS中每个⽂件、⽬录、数据块占⽤150Bytes。如果存放的⽂件数⽬过多的话会占⽤很⼤的内存甚⾄撑爆内存。HDFS适⽤于⾼吞吐

量,⽽不适合低时间延迟的访问。如果同时存⼊⼤量的⼩⽂件会花费很长的时间。本篇⽂章主要介绍在CDP7.1.6集群中如何对Hive表⼩⽂

件进⾏合并。

测试环境:

1.操作系统Redhat7.6

7.1.6

5.查看总分区数(可以看到共12个分区)

hdfs dfs -ls /warehouse/tablespace/managed/hive//test_table_hive/

6.总的⼩⽂件数量,和batch_date=20210608分区的⽂件数量

SET ion=true;

SET =nonstrict;

SET ions=3000;

5.查看总分区数

hdfs dfs -ls /warehouse/tablespace/managed/hive//test_table_hive_merge/

6.查看合并后的分区数和⼩⽂件数量

hdfs dfs -mkdir -p /tmp/hive/test_table_hive_data_backups

hdfs dfs -mv /warehouse/tablespace/managed/hive//test_table_hive/* /tmp/hive/test_table_hive_data_backups/

hdfs dfs -cp -f /warehouse/tablespace/managed/hive//test_table_hive_merge/* /warehouse/tablespace/managed/hive//test_table_hive/

SET ion=true;