
# 高性能小文件合并命令
#### 约束与限制
本章节仅适用于MRS 3.6.0-LTS及之后版本。
只支持合并Flink Append模式写入的小文件。不支持DDL变更的表合并，不支持Spark bulkInsert写入的Hudi表。
#### 命令功能
用于高效合并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。当待合并的表为分桶表时需设置为true。        | 否    |
   
#### 示例
```
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。
 
