您当前的位置: 首页 > 

Bulut0907

暂无认证

  • 1浏览

    0关注

    346博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【数据湖Hudi的概念】Write Operation类型和Schema Evolution

Bulut0907 发布时间:2022-05-30 09:11:32 ,浏览量:1

目录
  • 1. Write Operation类型
  • 2. Schema Evolution

1. Write Operation类型

类型如下:

  1. upsert(默认):先查找索引,然后再进行insert或update
  2. insert:不查找索引,直接insert
  3. bulk_insert:对于表初始化时,进行几百TB数据的insert。数据insert时会进行排序
  4. delete
    1. Soft Deletes:删除一条数据的时候,保留数据,但将其它字段设置为null
    2. Hard Deletes:进行physically remove,由3种实现方式:
      1. 通过DataSource:设置OPERATION_OPT_KEY为DELETE_OPERATION_OPT_VAL,对submit的dataset进行删除
      2. 通过DataSource:设置PAYLOAD_CLASS_OPT_KEY为"org.apache.hudi.EmptyHoodieRecordPayload",对submit的dataset进行删除
      3. 通过DataSource或DeltaStreamer:向dataset添加一列_hoodie_is_deleted,值为true表示delete,值为false或null表示upsert

write的流程:

  1. Index Lookup:看record属于哪个file group
  2. Partitioning:决定update / insert哪些file group,或创建哪些file group
  3. Write I/O:创建新的base file,或append到log file
  4. Update Index
  5. Commit:进行原子性的commit,如果失败则rollback
  6. Clean(if needed)
  7. Compaction:如果是MOR类型的表, 同步或异步的进行compaction
  8. Archive:将timeline中老的移动到archive文件夹
2. Schema Evolution

下表是schema changes对不同Hudi表的兼容情况

Schema ChangeCOWMORRemarks添加一个nullable列到schema的最后YesYes添加一个nullable列到struct类型字段的最后YesYesAdd a new complex type field with default (map and array)YesYes添加一个nullable的Hudi meta column,比如:_hoodie_meta_colYesYes将root level字段的类型从int升到longYesYes还支持其它类型提升:int => long、float、double,long => float、double,float => double,string => bytes,bytes => string将嵌套类型字段的子字段从int升到longYesYesPromote datatype from int to long for a complex type (value of map or array)YesYes
关注
打赏
1664501120
查看更多评论
立即登录/注册

微信扫码登录

0.0348s