#iceberg #analytics #data

iceberg-rs

Apache Iceberg 在 Rust 中的实现

1 个不稳定版本

0.1.0 2022年4月16日

#1570数据库接口

MIT/Apache

45KB
800

Iceberg-rs

Iceberg 的 Rust 实现。


Iceberg 是一个用于分析数据集的开源表格式。它非常方便访问 Iceberg 表信息,例如查看模式细节、跟踪更改和查看快照。此项目是 Iceberg 规范 的 Rust 实现。

Iceberg-rs 应用场景

use iceberg_rs::model::table::TableMetadataV2;

fn main() {
   let data = r#"
       {
           "format-version" : 2,
           "table-uuid": "fb072c92-a02b-11e9-ae9c-1bb7bc9eca94",
           "location": "s3://b/wh/data.db/table",
           "last-sequence-number" : 1,
           "last-updated-ms": 1515100955770,
           "last-column-id": 1,
           "schemas": [
               {
                   "schema-id" : 1,
                   "type" : "struct",
                   "fields" :[
                       {
                           "id": 1,
                           "name": "struct_name",
                           "required": true,
                           "field_type": "fixed[1]"
                       }
                   ]
               }
           ],
           "current-schema-id" : 1,
           "partition-specs": [
               {
                   "spec-id": 1,
                   "fields": [
                       {  
                           "source-id": 4,  
                           "field-id": 1000,  
                           "name": "ts_day",  
                           "transform": "day"
                       } 
                   ]
               }
           ],
           "default-spec-id": 1,
           "last-partition-id": 1,
           "properties": {
               "commit.retry.num-retries": "1"
           },
           "metadata-log": [
               {  
                   "metadata-file": "s3://bucket/.../v1.json",  
                   "timestamp-ms": 1515100
               }
           ],
           "sort-orders": [],
           "default-sort-order-id": 0
       }
   "#;
    let metadata = serde_json::from_str::<TableMetadataV2>(&data).unwrap();
 
}

功能

当前支持

  • 解析表元数据 v2。

即将推出

  • 清单文件。
  • 清单列表。
  • v1 表元数据支持。
  • 验证。

Iceberg 模型

展示 Iceberg 模型主要 名词 的图表。

erDiagram
    TABLE ||--o{ PARTITION_SPEC : partitions
    PARTITION_SPEC ||--o{ PARTITION_FIELD : fields
    PARTITION_FIELD ||--|| TRANSFORM : transformed
    TABLE ||--o{ SNAPSHOT : snapshots
    TABLE ||--|{ SCHEMA : schemas
    SCHEMA ||--o{ STRUCT_FIELD : fields
    TABLE ||--o{ SORT_ORDER : fields
    SORT_ORDER ||--o{ SORT_FIELD : fields

贡献

如果您想做出贡献,请fork仓库并使用功能分支。我们热烈欢迎拉取请求。

请使用 make validate 验证所有提交。

许可

在您的选择下,受 Apache License, Version 2.0MIT 许可 许可。
除非您明确表示,否则根据 Apache-2.0 许可证定义,您有意提交并包含在 Iceberg-rs 中的任何贡献都将根据上述许可进行双许可,没有额外的条款或条件。

依赖

~3–5MB
~93K SLoC