高性能小文件合并命令

该工具合并性能极高,请按须知正确使用该工具:
- 只支持合并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]')
参数描述
参数 | 描述 | 是否必填 |
|---|---|---|
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。

