浅谈iceberg的存储文件

这是我的第100篇原创文章

【前言】

上一篇文章介绍了如何通过java api对iceberg进行操作。这次我们来聊聊iceberg里的存储文件。

iceberg中的持久化存储的文件可以简单的分为数据文件和元数据文件。数据文件就是存储数据记录的文件,而元数据文件又可以分为元数据描述文件、清单列表文件(manifest list),或者根据文件名又可以称为快照文件、以及清单文件(manifest file)。三类文件通过层级关系相互关联起来。下面就分别详细介绍下文件的具体内容与格式。

【数据文件】

通常在表存储目录的data子目录下,存放的是实际数据记录的文件,文件的格式在建表时指定,默认为parquet。当然也可以指定为orc、textfile等支持的类型。

另外,在有定义分区字段的表中,数据写入时会按照分区字段的值依次创建子目录,最终的数据文件则存放在这些子目录中。

注:对于api的操作,可以自定义数据的存储路径。

【元数据文件】

该目录主要存放记录表的元数据信息的文件,可以分为如下几类:

1. $VersionID-$UUID$Extension

该文件记录表的元数据信息。在创建表的时候,会同步创建该文件,此后的每次操作都会产生新的元数据文件。

文件名中的 $VersionID为版本号,共5位长度;$UUID是通过UUID库生成的随机32位的ID,$Extension为文件的后缀,默认情况下为".metadata.json",如果对元数据指定了压缩方式,那么会在".metadata.json"的前面加上压缩类型的名称,例如"gzip.metadata.json"。

如文件名中的后缀描述一样,该文件采用json格式进行存储,下面罗列了各字段的含义:

  • format-version

元数据文件格式的版本,默认为1,代表为v1版本。

table-uuid

表的uuid。

location

元数据文件存储位置URI,通常是在hdfs中的全路径。

last-updated-ms

元数据最后更新时间

last-column-id

最后一个列字段的ID

schema

表格式定义说明,属于v1版本中的必需字段,在v2版本中以下面两个字段替代。

current-schema-id

当前表格式定义(schemas中包含的schema数组)使用的schema id。

schemas

v2格式中表格式定义说明,字段的值为一个数组,记录了历史schema的变更情况,数组中的每一项均为表schema的对象,包括类型、ID、字段数据,配合上面的current-schema-id就能知道当前版本的表格式定义是怎样的了。

"schemas" : [ {
    "type" : "struct",
    "schema-id" : 0,
    "fields" : [ {
      "id" : 1,
      "name" : "id",
      "required" : false,
      "type" : "int"
    }, {
      "id" : 2,
      "name" : "name",
      "required" : false,
      "type" : "string"
    }, {
      "id" : 3,
      "name" : "birth",
      "required" : false,
      "type" : "string"
    } ]
  } ]

partition-spec

表的分区字段定义说明,同样属于v1版本中的必需字段

default-spec-id

默认使用的分区的ID

partition-specs

表的分区字段定义说明,v2格式中的必须字段。字段的值为一个数组,记录了历史的分区定义,数组中的每一项均为一个分区对象,其中包括ID和分区字段说明,对于分区字段说明则又包含如下几个字段。

  • name

分区字段的名称。

transform

分区字段的转换方式,一般来说是字段本

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值