数据岗位面试题更新 2026-08-05

请详细说明在 Apache Hudi 中,如何利用压缩(compaction)操作来优化存储布局与查询性能?

数据技术原理方案权衡Apache Hudi

考察说明

考察对 Hudi 压缩机制的理解,包括其目的、触发方式及对存储和性能的影响。

回答思路

  1. 【回答框架 1】Hudi 的压缩操作主要针对采用写时复制(COW)和读时合并(MOR)表的存储优化。在 MOR 表中,更新操作会先写入基于行的日志文件(Avro),而基础文件(列式 Parquet)保持不可变。压缩操作会将日志文件中的记录与基础文件合并,生成新的基础文件,从而减少小文件数量,提升查询性能。
  2. 【回答框架 2】压缩操作由压缩策略(compaction strategy)决定,可通过 inline compaction(同步)或异步压缩(async compaction)执行。对于异步压缩,Hudi 会在写入过程中生成压缩计划(compaction plan),然后由后台调度器或外部调度器执行。
  3. 【回答框架 3】压缩的触发条件可由用户配置,如根据提交次数、时间间隔或文件大小阈值。合理设置压缩策略有助于平衡写放大和读性能。
  4. 【回答框架 4】压缩操作会重写数据文件,因此可能产生额外的写放大和资源消耗。但通过合并小文件,可以减少文件数量,优化存储布局,减少查询时的扫描开销。
  5. 【关键点 1】压缩主要针对 MOR 表,将日志文件与基础文件合并为新的基础文件。
  6. 【关键点 2】提供 inline 和异步两种压缩方式,异步压缩需生成并调度压缩计划。
  7. 【关键点 3】压缩可减少小文件数量,优化存储,但会带来写放大,需权衡配置。
  8. 【易错点 1】不要将压缩与清理(cleaning)混淆,清理是删除旧版本文件,压缩是合并数据。
  9. 【易错点 2】异步压缩若调度不及时,可能造成日志文件过多,影响查询性能。
  10. 【易错点 3】频繁压缩可能增加写放大,需根据负载合理设置触发阈值。