1、背景
在 flink 写入 odps 表时,发现抛出了异常。经过查询知道原因是该 odps table 表的小文件过多,超过了最大数量,导致写入失败。
2、小文件的定义
分布式文件系统按块(Block)存放数据,文件大小比块大小(64MB)小的文件称为小文件。分布式系统不可避免会产生小文件,比如SQL或其他分布式引擎的计算结果、Tunnel数据采集。合并小文件可以达到优化系统性能的目的。本文为您介绍如何在MaxCompute中合并小文件。
3、小文件的影响
小文件过多,会带来以下问题:
-
MaxCompute处理单个大文件比处理多个小文件更有效率,小文件过多会影响整体的执行性能。
-
小文件过多会给Pangu文件系统带来一定的压力,影响存储空间的有效利用。
4、解决
从存储和性能两方面考虑,都需要将计算过程中产生的小文件合并。MaxCompute在小文件处理方面的功能日趋完善,主要体现在以下方面:
-
默认情况下,当作业完成之后,如果满足一定的条件,系统会自动分配一个Fuxi Task进行小文件合并,即使用过程中经常看到的MergeTask。
-
默认情况下