You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hudi合并时实现部分列更新与全列插入的方案咨询

能否用PartialUpdateAvroPayload实现指定的部分列更新+全列插入场景?

可以实现,具体配置和逻辑处理如下:

核心配置项

  • 指定PartialUpdate负载类:
    hoodie.datasource.write.payload.class=org.apache.hudi.payload.PartialUpdateAvroPayload
    
  • 开启部分更新模式:
    hoodie.datasource.write.partial.update.mode=PARTIAL_UPDATE
    
  • 保留原有表的核心标识配置:
    hoodie.datasource.write.recordkey.field=emp_id
    hoodie.datasource.write.precombine.field=log_ts
    hoodie.datasource.write.partitionpath.field=log_dt
    

数据预处理与逻辑说明

  1. 更新记录(emp_id=1):
    批次数据仅传入emp_id、emp_name、log_ts即可。PartialUpdateAvroPayload会自动保留原表中未传入的load_ts字段值,同时用新的log_ts覆盖原字段。log_dt需要提前将批次数据的log_ts转换为日期格式(如2023-08-05)传入,确保分区字段更新正确。
  2. 新增记录(emp_id=2):
    需要在写入前预处理批次数据,填充缺失字段:
    • 用current_timestamp()生成当前时间作为load_ts的值
    • 用date_format(log_ts, 'yyyy-MM-dd')提取log_ts的日期作为log_dt的值
      预处理后再写入Hudi,即可实现新增记录的字段自动填充。

内容的提问来源于stack exchange,提问作者praneethh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 04:02:13