3 releases (breaking)

0.3.0 Aug 19, 2024
0.2.0 Feb 20, 2024
0.1.0 Aug 9, 2021

#331 in Database interfaces

Download history 8/week @ 2024-08-02 2/week @ 2024-08-09 995/week @ 2024-08-16 1156/week @ 2024-08-23 1731/week @ 2024-08-30 1545/week @ 2024-09-06 1005/week @ 2024-09-13 1028/week @ 2024-09-20 515/week @ 2024-09-27 335/week @ 2024-10-04 32/week @ 2024-10-11 23/week @ 2024-10-18 59/week @ 2024-10-25 93/week @ 2024-11-01 50/week @ 2024-11-08 79/week @ 2024-11-15

286 downloads per month
Used in 6 crates (5 directly)

Apache-2.0

1.5MB
31K SLoC

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

Dependencies

~39–56MB
~1M SLoC