您当前的位置: 首页 > 

Bulut0907

暂无认证

  • 1浏览

    0关注

    346博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Iceberg表规范】Schemas和Data Types

Bulut0907 发布时间:2022-04-26 09:18:34 ,浏览量:1

目录
  • 1. Column Projection列投影
  • 2. identifier-field-ids唯一字段ID
  • 3. Reserved Field IDs保留字段ID

1. Column Projection列投影

当一个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,也会被忽略
2. identifier-field-ids唯一字段ID

Flink、Hive等可以通过属性identifier-field-ids为每个字段定义唯一字段ID

3. Reserved 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
关注
打赏
1664501120
查看更多评论
立即登录/注册

微信扫码登录

0.0414s