iceberg

Crates.ioiceberg
lib.rsiceberg
version0.6.0
created_at2021-08-09 15:01:28.096758+00
updated_at2025-07-30 08:45:52.124417+00
descriptionApache Iceberg Rust implementation
homepagehttps://rust.iceberg.apache.org/
repositoryhttps://github.com/apache/iceberg-rust
max_upload_size
id433771
size2,942,982
Renjie Liu (liurenjie1024)

documentation

README

Apache Iceberg Official Native Rust Implementation

crates.io docs.rs

This crate contains the official Native Rust implementation of Apache Iceberg.

See the API documentation for examples and the full API.

Usage

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(())
}

IO Support

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-oss and storage-azdls are currently experimental and not included in storage-all.

Example usage in Cargo.toml:

[dependencies]
iceberg = { version = "x.y.z", features = ["storage-s3", "storage-fs"] }
Commit count: 735

cargo fmt