首页/数据/数据工程与 ETL 速查/Apache Hudi 基础概念
管道基础52 条

Apache Hudi 基础概念

Hudi 面向湖上增量更新:记录级 upsert、两种表类型(COW 重写文件、MOR 写日志文件)、基于主键与预合并字段决定同键保留哪条。

COW写时复制,更新即重写文件,读路径简单
MOR写日志文件,读取时合并,延迟低写放大小
关键字段recordkey 主键 + precombine 排序字段

PySpark 写入 Hudi 表

PySpark 写入 Hudi 表
hudi_options = {
    'hoodie.table.name': 'orders',
    'hoodie.datasource.write.recordkey.field': 'order_id',
    'hoodie.datasource.write.precombine.field': 'updated_at',
    'hoodie.datasource.write.table.type': 'COPY_ON_WRITE',
}
df.write.format('hudi').options(**hudi_options) \
  .mode('append').save('/warehouse/orders_hudi')
同主键多版本记录以 precombine 字段较大者为准,字段选错会导致旧数据覆盖新数据。

易错点

  • MOR 表不压缩日志会累积读取开销,需要安排 compaction
  • recordkey 组合字段的拼接顺序与分隔符要固定,变更会破坏历史数据识别

数据来源与参考

  • Apache Hudi 官方文档:Table Types 与 Write Operations
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌