5.3 小文件

操作场景:

现在社区对于输入是小文件是没有自动合并功能,提供的合并命令,不够实用, 比如一个表有很多分区,需要对每个分区执行合并操作,我们暂时不建议用户用。

现在如果输入有小文件要合并,我们是建议用户先原始数据加载到hive表中,再启动一个MR从小文件临时表插入最终表,这个过程即解决小文件也解决文件存储格式(ORC + Snappy)。

对于输出,现在hive有参数控制多小的文件是小文件,对于输出的小文件是否要进行合并的参数,如下。

对于顺序执行的作业链,只有最后一张表的数据需要持久化,中间临时结果用完就删除的情况,可以在最后一个insert into table之前再开启,防止之前的作业也会launch merge job使得作业变慢。

修改参数:

参数名 描述
hive.merge.mapfiles 默认为 True,是否合并 Map 输出文件
hive.merge.mapredfiles 默认为 False,是否合并 Reduce 输出文件
hive.merge.size.per.task 默认256*1000*1000,合并后单个文件的大小
hive.merge.smallfiles.avgsize 默认16 * 1000 * 1000,文件平均大小小于该值时,认为需要合并

results matching ""

    No results matching ""