---
title: "delta-rs"
description: "delta-rs is a native Rust implementation of the Delta Lake protocol, exposed to Python as the `deltalake` package, that lets engines read and write Delta tables without depending on Spark or the JVM."
canonical: "https://motherduck.com/glossary/delta-rs/"
related:
  - title: "Delta Lake | MotherDuck Docs"
    url: "https://motherduck.com/docs/integrations/file-formats/delta-lake/"
  - title: "DuckDB vs Pandas vs Polars for Python Developers"
    url: "https://motherduck.com/blog/duckdb-versus-pandas-versus-polars/"
  - title: "Replit + MotherDuck Integration | DuckDB Analytics"
    url: "https://motherduck.com/ecosystem/replit/"
---

# delta-rs

> delta-rs is a native Rust implementation of the Delta Lake protocol, exposed to Python as the `deltalake` package, that lets engines read and write Delta tables without depending on Spark or the JVM.

## Overview
delta-rs is a Rust library implementing the Delta Lake transaction protocol from scratch, independent of Spark. It's most commonly used through its Python bindings, distributed as the `deltalake` package, which lets Python code read, write, and manage Delta tables directly.

## Why it exists
Delta Lake originated as a Spark-specific project, which meant any tool wanting to read or write Delta tables needed a JVM and Spark dependency, even for simple operations. delta-rs removes that requirement, giving lightweight, embeddable Delta support to Rust and Python tools — including data frame libraries like Polars and pandas, and orchestration or ETL code that shouldn't need to launch a Spark job just to append rows to a table.

## Typical usage
```python
from deltalake import DeltaTable, write_deltalake
import pandas as pd

df = pd.DataFrame({"id": [1, 2], "amount": [10.5, 20.0]})
write_deltalake("s3://bucket/warehouse/orders", df, mode="append")

dt = DeltaTable("s3://bucket/warehouse/orders")
result = dt.to_pandas()
```

## Relationship to delta-kernel-rs and DuckDB
delta-rs is a separate project from `delta-kernel-rs`, a newer Rust library also maintained under the Delta Lake project, designed specifically as a low-level building block for engines to implement their own Delta connectors. DuckDB's `delta` extension is built on `delta-kernel-rs` rather than `delta-rs` directly, but both are part of the same broader move toward engine-agnostic, non-JVM Delta Lake tooling. In practice, this means the same Delta table written with `deltalake`/delta-rs from a Python script can be read straight back with DuckDB's `delta_scan()`, with no Spark involved anywhere in the pipeline:

```sql
INSTALL delta;
LOAD delta;
SELECT * FROM delta_scan('s3://bucket/warehouse/orders');
```