更新时间:2025-12-10 GMT+08:00
分享

高性能小文件合并命令

该工具合并性能极高,请按须知正确使用该工具:

  • 只支持合并Flink Append模式写入的小文件。
  • 不支持DDL变更的表合并,不支持Spark bulkInsert写入的Hudi表。

约束与限制

本章节仅适用于MRS 3.6.0-LTS及之后版本。

命令功能

用于高效合并Flink Append模式写入的小文件。

命令格式

(table => '[table]', database =>'[database]', tablePath => '[tablePath]')

call small_file_merge(table => '[table]', partition =>'[partition path]', rollBack => '[rollback]', targetSize=>'[fileSize]', compress=>'[compress]', shuffleNum=>'num',bucketTable=>'[tableType]')

参数描述

表1 参数描述

参数

描述

是否必填

table

要执行小文件合并的表名。

partition

要合并的分区,仅支持单分区。

rollBack

是否回滚上次合并,可多次执行。 默认否。

targetSize

目标合并文件大小,默认1GB。

compress

压缩格式,默认snappy。 这个值会严重影响合并效率,与原始表的压缩格式保持一致。

shuffleNum

任务并发度,默认200。

bucketTable

是否为分桶表,默认false。

示例

call small_file_merge(table=>'hudidb3.hudi_test1', partition=>'p=0')
call small_file_merge(table=>'hudidb3.hudi_test1', partition=>'p=0',rollBack=>true,targetSize=>100000000,compress=>'zstd')

系统响应

可在客户端中查看查询结果。返回合并结果:

  • rewriteSmallFileNum: 合并了多少文件。
  • mergedFileNum: 生成了多少大文件。
  • rollbackNum: 回滚了多少文件。
  • costTime:执行耗时,单位s。

相关文档