delta-arrow-reader
delta-arrow-reader is a read-only Delta Lake reader for Apache Arrow record
batches. It provides a direct pull-driven stream API and an optional DataFusion
table provider. The caller owns the Tokio runtime, and scans do not collect the
whole result in memory.
Installation
The 0.1.0 package declaration is:
[]
= "0.1.0"
= "0.3"
= { = "1", = ["macros", "rt-multi-thread"] }
Enable the DataFusion adapter and add the matching DataFusion dependency when you need SQL integration:
[]
= { = "54.1.0", = false, = ["sql"] }
= { = "0.1.0", = ["datafusion"] }
= { = "1", = ["macros", "rt-multi-thread"] }
Read a table directly
Use load_async from asynchronous code. The returned stream exposes live scan
metrics and yields batches as the caller requests them.
use ;
use TryStreamExt;
# async
DeltaTableBuilder::load is the blocking table-load alternative. Scan building
and execution remain asynchronous.
Register a DataFusion table
The datafusion feature exposes DeltaTableProvider, register_delta_table,
and DataFusion execution metrics. Registration loads no data files; reads begin
when DataFusion executes a query.
#
# async
Features
| Feature | Default | Purpose |
|---|---|---|
native-async |
Yes | Native asynchronous Parquet data-file reader and I/O metrics. |
official-kernel |
No | Official Delta Kernel data-file reader backend. |
datafusion |
No | DataFusion provider, registration, filtering, execution, and metrics. |
At least one reader backend must be enabled to execute a scan. Select the
backend for a scan with DeltaReaderExecutionOptions::with_reader_backend.
When default features are enabled, NativeAsync is selected by default.
Runtime, errors, and metrics
- The caller supplies the Tokio runtime and drives returned streams.
- Execution limits, buffering, Parquet metadata prefetch, and optional
full-file reads are configured through
DeltaReaderExecutionOptions. DeltaReaderError::phaseandDeltaReaderError::as_strreturn stable, redacted categories. Dependency failures remain available through the standard error source chain.DeltaReadMetricsis a cloneable live handle.snapshotreturns an immutable point-in-time view. NativeAsync Parquet I/O counters areNonewhen the OfficialKernel backend is selected.
Scope
The crate supports the extracted read path: snapshot selection, protocol and schema loading, projections, predicates, deletion vectors, partition planning, bounded scheduling, NativeAsync and OfficialKernel data-file reads, and the optional DataFusion adapter.
It does not write Delta tables, manage transactions, create a Tokio runtime, or provide Delta Funnel orchestration, reporting, or Python APIs.
See architecture, provenance, and the security policy for repository details.
Development checks
The repository CI runs every feature combination. The focused local checks are:
cargo test --locked --all-features
RUSTDOCFLAGS="-D warnings" cargo doc --locked --all-features --no-deps
cargo package --locked