| Crates.io | iceberg |
| lib.rs | iceberg |
| version | 0.6.0 |
| created_at | 2021-08-09 15:01:28.096758+00 |
| updated_at | 2025-07-30 08:45:52.124417+00 |
| description | Apache Iceberg Rust implementation |
| homepage | https://rust.iceberg.apache.org/ |
| repository | https://github.com/apache/iceberg-rust |
| max_upload_size | |
| id | 433771 |
| size | 2,942,982 |
This crate contains the official Native Rust implementation of Apache Iceberg.
See the API documentation for examples and the full API.
use futures::TryStreamExt;
use iceberg::io::{FileIO, FileIOBuilder};
use iceberg::{Catalog, Result, TableIdent};
use iceberg_catalog_memory::MemoryCatalog;
#[tokio::main]
async fn main() -> Result<()> {
// Build your file IO.
let file_io = FileIOBuilder::new("memory").build()?;
// Connect to a catalog.
let catalog = MemoryCatalog::new(file_io, None);
// Load table from catalog.
let table = catalog
.load_table(&TableIdent::from_strs(["hello", "world"])?)
.await?;
// Build table scan.
let stream = table
.scan()
.select(["name", "id"])
.build()?
.to_arrow()
.await?;
// Consume this stream like arrow record batch stream.
let _data: Vec<_> = stream.try_collect().await?;
Ok(())
}
Iceberg Rust provides various storage backends through feature flags. Here are the currently supported storage backends:
| Storage Backend | Feature Flag | Status | Description |
|---|---|---|---|
| Memory | storage-memory |
โ Stable | In-memory storage for testing and development |
| Local Filesystem | storage-fs |
โ Stable | Local filesystem storage |
| Amazon S3 | storage-s3 |
โ Stable | Amazon S3 storage |
| Google Cloud Storage | storage-gcs |
โ Stable | Google Cloud Storage |
| Alibaba Cloud OSS | storage-oss |
๐งช Experimental | Alibaba Cloud Object Storage Service |
| Azure Datalake | storage-azdls |
๐งช Experimental | Azure Datalake Storage v2 |
You can enable all stable storage backends at once using the storage-all feature flag.
Note that
storage-ossandstorage-azdlsare currently experimental and not included instorage-all.
Example usage in Cargo.toml:
[dependencies]
iceberg = { version = "x.y.z", features = ["storage-s3", "storage-fs"] }