hudi系列-upsert写过程

环境

hudi upsert写过程最为复杂,流程上有一个桶分配的环节,当以flink state为索引时,流程变得更长,所以写入性能较差。

  • hudi 0.13.0
  • mor表+insert/upsert 或 cow表+upsert
  • flink状态索引

核心类为BucketAssignFunctionStreamWriteFunction

由于存在着语义上的迷惑,从flink 0.13.1开始mor insert将不再走upsert写过程,而是与cow insert合并,至此,insert统一为append模式,写入只生成parquet文件

整体流程

 | pk1,pk4 | ===\     /=== | bucket assigner1 | ===\     /=== | write task1(pk1,pk2) |
              shuffle(by PK)                    shuffle(by bucket ID)
 | pk2,pk3 | ===/     \=== | bucket assigner2 | ===/     \=== | write task2(pk3,pk4) |
  1. 流中的数据先根据主键进行shuffle,由于主键的唯一性,所以同一记录后续的变更都会分配到相同的bucket assigner中
  2. bucket assi

你可能感兴趣的:(hudi系列,大数据,数据湖,hudi,mor,写)