高性能小文件合并命令
该工具合并性能极高,请按须知正确使用该工具:
- 只支持合并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。