hudi系列-KeyGenerator & 分区提取器

record key与hoodie key

hudi支持数据更新,在upsert语义下,需要用记录级别的主键来表示每行数据的唯一性。主键是由record key和分区路径共同构成的

  • record key:记录键,分区下唯一,当为非分区表时等同于主键,虽然在源码中声明了a recordKey that acts as primary key for a record
  • hoodie key:由record key + 分区路径组成,所以它是真正表示主键,无论是否分区表

在flink基于状态索引写过程中,基于record key进行哈稀,即同一个record key出现在不同分区,则表示分区值发生了修改(全局索引)
基于bucket写过程中,基于hoodie key进行哈稀,即同一个record key出现在不同分区,则表示是两条不同的记录(非全局索引,不支持分区值修改)

KeyGenerator

hudi中的KeyGenerator就是从行数据中提取record key值和分区值来生成HoodieKey对象。以插件化的方式,默认提供了多种开箱即用的生成器,基本都能满足各种需求。

  public abstract String getRecordKey(GenericRecord record);
  public abstract String getPartitionPath(GenericRecord record);

你可能感兴趣的:(hudi系列,hudi,KeyGenerator,分区,extract)