Apache Hudi存储变更粒度及多次小修改空间占用问询
Apache Hudi的变更存储机制与空间占用分析
变更存储方式
Hudi的变更存储逻辑核心取决于表类型,而非计算引擎:
- Copy-On-Write (COW) 表:更新操作会重写包含目标行的整个数据文件。当需要修改某一行时,Hudi会定位到该行所在的基础数据文件,生成一个包含修改后内容的完整新文件,同时标记旧文件为待删除(不会立即物理清理,保留版本历史)。这种模式下,变更以完整文件替换的形式记录。
- Merge-On-Read (MOR) 表:更新操作直接写入增量日志文件,记录行级别的插入、更新或删除动作。基础数据文件保持不变,读操作时会自动合并基础文件与增量日志,返回最新的数据视图。这种模式下,变更记录是行级的增量条目。
空间占用测算(针对100MiB单文件表、100次单行1KiB修改)
- COW表场景:每次修改都需要重写整个100MiB的文件,100次修改后会生成100个新的100MiB文件(加上原文件及历史版本),总空间占用约为
100*100MiB(实际会因版本保留策略略有差异)。 - MOR表场景:每次修改仅写入约1KiB的增量日志记录,100次修改新增的空间约为
100*1KiB,加上原有的100MiB基础文件,总空间占用接近100MiB + 100KiB。
内容的提问来源于stack exchange,提问作者Test
相关产品推荐
相关产品推荐

