Skip to main content

Native Delta Lake Python binding based on delta-rs with Pandas integration

Project description

Deltalake-python

PyPI userdoc apidoc

Native Delta Lake Python binding based on delta-rs with Pandas integration.

Example

from deltalake import DeltaTable
dt = DeltaTable("../rust/tests/data/delta-0.2.0")
dt.version()
3
dt.file_uris()
['s3://bucket/table/part-00000-cb6b150b-30b8-4662-ad28-ff32ddab96d2-c000.snappy.parquet',
 's3://bucket/table/part-00000-7c2deba3-1994-4fb8-bc07-d46c948aa415-c000.snappy.parquet',
 's3://bucket/table/part-00001-c373a5bd-85f0-4758-815e-7eb62007a15c-c000.snappy.parquet']

See the user guide for more examples.

Installation

# with pip
pip install deltalake
# with uv
uv add deltalake
# with poetry
poetry add deltalake

NOTE: official binary wheels are linked against openssl statically for remote object store communication. Please file a Github issue to request a critical openssl upgrade.

Tracing and Observability

Delta-rs supports OpenTelemetry tracing for performance analysis and debugging.

Basic Example

import os
import deltalake
from deltalake import write_deltalake, DeltaTable

# Enable logging to see trace output in stdout
os.environ["RUST_LOG"] = "deltalake=debug"

# Initialize tracing (uses default HTTP endpoint or OTEL_EXPORTER_OTLP_ENDPOINT env var)
# For authentication, set OTEL_EXPORTER_OTLP_HEADERS="x-honeycomb-team=your-api-key"
# The HTTP exporter automatically reads OTEL_EXPORTER_OTLP_HEADERS for API keys
deltalake.init_tracing()

# All Delta operations are now traced
write_deltalake("my_table", data)
dt = DeltaTable("my_table")
df = dt.to_pandas()

When you run this code, you'll see trace information in stdout showing operation timings and execution flow.

Build custom wheels

Sometimes you may wish to build custom wheels. Maybe you want to try out some unreleased features. Or maybe you want to tweak the optimization of the Rust code.

To compile the package, you will need the Rust compiler and maturin:

curl https://sh.rustup.rs -sSf | sh -s

Then you can build wheels for your own platform like so:

uvx maturin build --release --out wheels

Note:

  • uvx invokes a tool without installing it.
  • if you plan to often use maturin, you can install the "tool" with uv tool install maturin.

For a build that is optimized for the system you are on (but sacrificing portability):

RUSTFLAGS="-C target-cpu=native" uvx maturin build --release --out wheels

Cross compilation

The above command only works for your current platform. To create wheels for other platforms, you'll need to cross compile. Cross compilation requires installing two additional components: to cross compile Rust code, you will need to install the target with rustup; to cross compile the Python bindings, you will need to install ziglang.

The following example is for manylinux2014. Other targets will require different Rust target and Python compatibility tags.

rustup target add x86_64-unknown-linux-gnu

Then you can build wheels for the target platform like so:

uvx --from 'maturin[zig]' maturin build --release --zig \
    --target x86_64-unknown-linux-gnu \
    --compatibility manylinux2014 \
    --out wheels

If you expect to only run on more modern system, you can set a newer target-cpu flag to Rust and use a newer compatibility tag for Linux. For example, here we set compatibility with CPUs newer than Haswell (2013) and Linux OS with glibc version of at least 2.24:

RUSTFLAGS="-C target-cpu=haswell" uvx --from 'maturin[zig]' maturin build --release --zig \
    --target x86_64-unknown-linux-gnu \
    --compatibility manylinux_2_24 \
    --out wheels

See note about RUSTFLAGS from the arrow-rs readme.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

deltalake-1.6.1-cp310-abi3-musllinux_1_2_x86_64.whl (49.6 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ x86-64

deltalake-1.6.1-cp310-abi3-musllinux_1_2_aarch64.whl (48.8 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

deltalake-1.6.1-cp310-abi3-manylinux_2_28_aarch64.whl (48.8 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

deltalake-1.6.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (49.5 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

deltalake-1.6.1-cp310-abi3-macosx_11_0_arm64.whl (44.8 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

deltalake-1.6.1-cp310-abi3-macosx_10_12_x86_64.whl (48.5 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

Details for the file deltalake-1.6.1-cp310-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for deltalake-1.6.1-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 91d8c064ce04cdd06bbdd66614df7050c1082871ca60054cc5b5074d0e3fc345
MD5 16c34d4a89c6063f002d2075efed2bb3
BLAKE2b-256 34766723168656063c5cfd37b9941df4d3d68e8b57b93641c026e345c22f5c29

See more details on using hashes here.

File details

Details for the file deltalake-1.6.1-cp310-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for deltalake-1.6.1-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 89c68fef155215a2e8cd7d93762cadc3be99d6aa42486a30e88a236b4edc7140
MD5 41c5143c9ec4dfe1a9e6fb795f8936b0
BLAKE2b-256 1ffcc6abee2eb3d6a2729ff81cc4c8502342a9f0fcf3fccfec9decbd5780b010

See more details on using hashes here.

File details

Details for the file deltalake-1.6.1-cp310-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for deltalake-1.6.1-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d5ba7bbea9d61948ba7caaaa1562bb9997bdf2398ba30d60e99006451098fb01
MD5 a12228ecd6b63e42d919843a7664d4ba
BLAKE2b-256 b7528387621a228d3b3df1c251acfef50fa7e34be05b058d316ab2c69bf8d0f1

See more details on using hashes here.

File details

Details for the file deltalake-1.6.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for deltalake-1.6.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 46a13abc2d7abc072375faeb718443be61ec1162d1708b1c67a76aff4e0187a5
MD5 6b8c0862bd79a5dded787c9488e4b07b
BLAKE2b-256 ba500c7fd4779f1492da3c86cfcfa2ad25322355ea7c6eb3e7feeb16c7de6f07

See more details on using hashes here.

File details

Details for the file deltalake-1.6.1-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for deltalake-1.6.1-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e0bd4f3bbc9a53e53c103d6733f09b1538a75e7e69b5ecbca9a865f68bd70656
MD5 e2497a6590ed20d4e12d67ac2d704236
BLAKE2b-256 8c928cda3756b12f4b5879ec8a9be9101a55f280c5fcd6426be17f401d470df0

See more details on using hashes here.

File details

Details for the file deltalake-1.6.1-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for deltalake-1.6.1-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f5f22371ed5ac3977839d7a09c0a9ccdbbdac79437bbb977f6b57c7c35d7fa34
MD5 efc3312e2c8cfdc766084feb426ed82a
BLAKE2b-256 519bcb8c10528466901112d37f7afa67646263a229277983e70e5d780d58c2b2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page