1 个不稳定版本
0.1.0 | 2022年4月16日 |
---|
#1570 在 数据库接口
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.0 或 MIT 许可 许可。除非您明确表示,否则根据 Apache-2.0 许可证定义,您有意提交并包含在 Iceberg-rs 中的任何贡献都将根据上述许可进行双许可,没有额外的条款或条件。
依赖
~3–5MB
~93K SLoC