You need to enable JavaScript to run this app.
导航
Spark 小文件合并
最近更新时间:2025.05.30 11:24:29首次发布时间:2025.05.30 11:24:29
我的收藏
有用
有用
无用
无用

Serverless Spark 提供 Hive 表自动化小文件合并功能,支持以下两种合并策略配置:

  • 按文件数量合并
  • 按文件大小合并

按文件数量合并

通过控制 shuffle partition 的数量来控制最后写出的文件数量。

-- 必填参数
set spark.merge.files.enabled=true;

-- 可选参数
set spark.merge.files.number=1;

按文件大小合并

借助 Spark AQE 规则对 shuffle 分区读取的数据量大小进行控制。鉴于文件大小还与压缩格式及其压缩率有关,最终生成的文件大小相较于预先设定的参数值,会出现一定程度的浮动。

-- 必填参数
set spark.merge.files.enabled=true;
set spark.merge.files.byBytes.enabled=true;

-- 可选参数
set spark.merge.files.byBytes.fileBytes=536870912;
set spark.merge.files.byBytes.compressionRatio=1;
-- fileBytes * compressionRatio就是预估的文件大小

注意

  • 支持动态分区插入,但不兼容 sort by/distribute by/cluster by,不会继承 SQL 中原有的排序逻辑。
  • 当前暂不支持对湖格式表进行操作。如果需要对湖格式表进行小文件合并,请参考对应格式所具备的 compact 功能来处理。