Skip to main content

PySpark-like DataFrame API in Python—no JVM. Uses robin-sparkless (Rust/Polars) as the execution engine.

Project description

Sparkless — PySpark-compatible DataFrames without the JVM

Install: pip install "sparkless>=4,<5"

Use Sparkless to run PySpark-style unit tests and local pipelines 10–100× faster in CI. Powered by the open-source Rust engine robin-sparkless (Polars execution).

Not a full cluster replacement. See Before you adopt for UDF, parity, and production caveats.

CI PyPI crates.io docs.rs Documentation License: MIT


Choose your path

I want to… Start here
Use Sparkless in Python (tests, local pipelines) python/README.md · pip install "sparkless>=4,<5"
Embed the Rust engine docs/QUICKSTART.md · robin-sparkless = "4" on crates.io
Contribute CONTRIBUTING.md · make check-full

Full documentation: Read the Docs


Quick start (Python)

# Swap the import—everything else stays the same.
from sparkless.sql import SparkSession, functions as F

spark = SparkSession.builder.app_name("demo").get_or_create()
df = spark.createDataFrame([{"x": 1}, {"x": 2}])
df.filter(F.col("x") > 1).show()
pip install "sparkless>=4,<5"

More: Python getting started · Testing guide · FAQ


Why Sparkless (Python)?

  • Familiar APISparkSession, DataFrame, Column, and PySpark-like functions so you can reuse patterns without the JVM.
  • Fast local execution — Runs natively (no JVM) and uses Polars for IO, expressions, and aggregations.
  • Test the same suite two ways — Use sparkless.testing to run tests with Sparkless (fast) or real PySpark (parity checks).
  • Optional “Spark-like” features — SQL, temp/global temp views, saveAsTable, Delta, and JDBC (see python/README.md).

Features (Python surface)

Area What’s included
Core SparkSession, DataFrame, Column, functions
IO CSV, Parquet, JSON, Delta
Expressions col, lit, when/otherwise, casts, null handling
Aggregates count, sum, avg, min, max, groupBy().agg()
Window row_number, rank, dense_rank, lag, lead, first_value, last_value via .over()
Arrays, strings, JSON Common PySpark functions (explode, regexp_*, get_json_object, from_json, to_json, …)
SQL + views spark.sql, temp/global temp views, saveAsTable, catalog().listTables()
JDBC Read/write via spark.read.jdbc(...) / df.write.jdbc(...)

Parity: 200+ fixtures validated against PySpark. Before you adopt · PySpark differences · Parity status


Installation

Python (sparkless v4) — recommended

pip install "sparkless>=4,<5"

Contributors: pip install ./python or cd python && maturin develop — see CONTRIBUTING.md.

Rust engine (optional)

Most users should use the Python package above. To embed the engine in Rust:

[dependencies]
robin-sparkless = "4"

Optional features: sql, delta, jdbc, sqlite, jdbc_mysql. See docs/QUICKSTART.md.


Development

Prerequisites: Rust (see rust-toolchain.toml), Python 3.8+, maturin. Java only for SPARKLESS_TEST_MODE=pyspark.

See CONTRIBUTING.md for setup, make check-full, pytest, and maturin workflow.

Command Description
make check-full Full CI-equivalent check (Rust + Python)
pytest tests/ -v Python tests (sparkless backend)
SPARKLESS_TEST_MODE=pyspark pytest tests/ -v Same tests against real PySpark
make check Rust: format, clippy, audit, tests

Documentation

Resource Description
Python package Install, quick start, platform matrix, API overview
Read the Docs Getting started, testing, migration, FAQ
Before you adopt UDF limits, parity caveats, production notes
CONTRIBUTING Dev setup and PR checklist
docs.rs Rust API reference
Testing Guide Dual-mode testing with sparkless.testing
PySpark Differences Known divergences
RELEASING Publishing to crates.io and PyPI

See CHANGELOG.md for version history.


License

MIT

Project details


Download files

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

Source Distribution

sparkless-4.13.0.tar.gz (20.8 MB view details)

Uploaded Source

Built Distributions

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

sparkless-4.13.0-cp38-abi3-win_arm64.whl (35.2 MB view details)

Uploaded CPython 3.8+Windows ARM64

sparkless-4.13.0-cp38-abi3-win_amd64.whl (38.2 MB view details)

Uploaded CPython 3.8+Windows x86-64

sparkless-4.13.0-cp38-abi3-musllinux_1_2_x86_64.whl (36.5 MB view details)

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

sparkless-4.13.0-cp38-abi3-musllinux_1_2_aarch64.whl (34.2 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ ARM64

sparkless-4.13.0-cp38-abi3-manylinux_2_28_aarch64.whl (34.2 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.28+ ARM64

sparkless-4.13.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (36.5 MB view details)

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

sparkless-4.13.0-cp38-abi3-macosx_11_0_arm64.whl (32.8 MB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

sparkless-4.13.0-cp38-abi3-macosx_10_12_x86_64.whl (35.0 MB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

Details for the file sparkless-4.13.0.tar.gz.

File metadata

  • Download URL: sparkless-4.13.0.tar.gz
  • Upload date:
  • Size: 20.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for sparkless-4.13.0.tar.gz
Algorithm Hash digest
SHA256 3dc05451075d69d88d32f07d0ea2c4e1120f45af1cd8e28b782ae5c30fcc3a9a
MD5 1fc7b95cbbc983a820ce815295383684
BLAKE2b-256 d213d02d6ec3c261603892f7291074c6df93b1400c4c86a77204466e51729593

See more details on using hashes here.

File details

Details for the file sparkless-4.13.0-cp38-abi3-win_arm64.whl.

File metadata

File hashes

Hashes for sparkless-4.13.0-cp38-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 8e460141304769a9efedf7ee11f131374f226a2427bd795155dd0d573ed44c9f
MD5 139c8fa0f2ef897b74c6f2c4e153d830
BLAKE2b-256 63658fd47c8d46bb14a37d987e01db9c0f1f13f12d248fa93b47745efde12e89

See more details on using hashes here.

File details

Details for the file sparkless-4.13.0-cp38-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for sparkless-4.13.0-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 a5e5413f54ff781a9cb352f19977ddde40b686011d8f5d1b31231410f1d9302c
MD5 7e8d02421af8cd15cb0a07b253af0ae5
BLAKE2b-256 8a7bfc768c34ed20a557e3dae0046ea11cbdc1cf659f5d6dbdaa84c5d6722af2

See more details on using hashes here.

File details

Details for the file sparkless-4.13.0-cp38-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for sparkless-4.13.0-cp38-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c89f99c9968e7fca8bba3771320a3898fb49ef84fee7e56b963adc9bed43f3f2
MD5 e4799e5eff5c526ef012da716420a7c8
BLAKE2b-256 084bf05df8b77412c4cb4a4b979c0b85a247937fc1e6676450b3b42aa7c4684c

See more details on using hashes here.

File details

Details for the file sparkless-4.13.0-cp38-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for sparkless-4.13.0-cp38-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 252368f66f86eba1c72bf760273f27e1b3cc89152df8e2f63bb9c5f21a5b966e
MD5 a5390f26164970afbe8e01a19399969c
BLAKE2b-256 71b55b5476e5673cea893f7fb0f2d5d64f1e202023fa835e7dbd4db603ee87c3

See more details on using hashes here.

File details

Details for the file sparkless-4.13.0-cp38-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for sparkless-4.13.0-cp38-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5275b46cb6b5a1cd26426397e04b515c6eaaed62955b63d95978d016050d58ef
MD5 6d71bc0498cc875abcf2bb182daae9e8
BLAKE2b-256 b039f4589360bc5cd0d878f49d2ee38ef31593cce5055a9c208411a8c19c8d72

See more details on using hashes here.

File details

Details for the file sparkless-4.13.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sparkless-4.13.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3893fbfbf5b231bf367cfa03b9930d783d41aed5e6b7ab255b629f5e3a41bed7
MD5 f231e920cca1248715963f113473c113
BLAKE2b-256 74e26011d885765ff409c4335b9f358a1a75c47305696a929ae59c2ea956a393

See more details on using hashes here.

File details

Details for the file sparkless-4.13.0-cp38-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sparkless-4.13.0-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 182ef6c54d50152ee07ea25fb568f2cb47a4e633588c4695293a507e2d264bbc
MD5 8ddd6ff03bfee0b78ad73f7861efb7c3
BLAKE2b-256 00dcfd739b75122793ea8714905de900e6d756652a313f7fc3a5fe61f741472f

See more details on using hashes here.

File details

Details for the file sparkless-4.13.0-cp38-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for sparkless-4.13.0-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 610a65370e618659032de5e8922e7f625d3f8b242658b133f6965a9b36f49faa
MD5 0610655cf753b61a4d4124765cf19f6b
BLAKE2b-256 7ec7aff2047f58a5bdc2f4714f0a19141f7cd56825283c2c5078f9b4e0935585

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