【Iceberg表规范】Schemas和Data Types

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一行数据储存的文件的path
2147483645 _poslong一行数据在data file的position
2147483644 _deletedboolean一行数据是否被删除
2147483643 _spec_idintSpec ID用于追踪一行数据属于哪个data file
2147483642 _partitionstruct用于标识一行数据属于哪个partition
2147483546 file_pathstring一行数据储存的文件的path,用于基于position的delete files
2147483545 poslong一行数据在data file的position,用于基于position的delete files
2147483544 rowstruct<…>被删除行的多个值,用于基于值等式的delete files
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值