目录
1. Column Projection列投影
- 1. Column Projection列投影
- 2. identifier-field-ids唯一字段ID
- 3. Reserved Field IDs保留字段ID
当一个data file没有field ids信息时,可以通过表属性schema.name-mapping.default
定义一个json字段映射,为data file提供备用的field ids。json中需为每个字段提供如下信息:
- names: 为一个字段定义0个或多个name
- field-id: 可以有field-id,也可以没有field-id(当定义了names)
- fields: 一个可选的字段映射列表,用于struct、map、list字段类型的内部嵌套字段
json字段映射有如下约束
- names中的name可以包含
.
,并不表示嵌套字段 - 当一个字段在不同的data files中,有不同的name,需要为names定义多个name
- 当一个字段只存在于Iceberg的Schema中,不存在于data files中,则可以定义一个空的names
- 当一个字段只存在于data files中,不存在于Iceberg的Schema中,就算定义了field-id,也会被忽略
Flink、Hive等可以通过属性identifier-field-ids
为每个字段定义唯一字段ID
自定义的唯一字段ID,不能大于2147483447(Integer.MAX_VALUE - 200),保留字段ID用于元数据列,元数据列的保留字段ID使用如下:
字段ID, 字段name字段类型描述2147483646 _filestring一行数据储存的文件的path2147483645 _poslong一行数据在data file的position2147483644 _deletedboolean一行数据是否被删除2147483643 _spec_idintSpec ID用于追踪一行数据属于哪个data file2147483642 _partitionstruct用于标识一行数据属于哪个partition2147483546 file_pathstring一行数据储存的文件的path,用于基于position的delete files2147483545 poslong一行数据在data file的position,用于基于position的delete files2147483544 rowstruct被删除行的多个值,用于基于值等式的delete files