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.
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 API —
SparkSession,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.testingto 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
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 Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3dc05451075d69d88d32f07d0ea2c4e1120f45af1cd8e28b782ae5c30fcc3a9a
|
|
| MD5 |
1fc7b95cbbc983a820ce815295383684
|
|
| BLAKE2b-256 |
d213d02d6ec3c261603892f7291074c6df93b1400c4c86a77204466e51729593
|
File details
Details for the file sparkless-4.13.0-cp38-abi3-win_arm64.whl.
File metadata
- Download URL: sparkless-4.13.0-cp38-abi3-win_arm64.whl
- Upload date:
- Size: 35.2 MB
- Tags: CPython 3.8+, Windows ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e460141304769a9efedf7ee11f131374f226a2427bd795155dd0d573ed44c9f
|
|
| MD5 |
139c8fa0f2ef897b74c6f2c4e153d830
|
|
| BLAKE2b-256 |
63658fd47c8d46bb14a37d987e01db9c0f1f13f12d248fa93b47745efde12e89
|
File details
Details for the file sparkless-4.13.0-cp38-abi3-win_amd64.whl.
File metadata
- Download URL: sparkless-4.13.0-cp38-abi3-win_amd64.whl
- Upload date:
- Size: 38.2 MB
- Tags: CPython 3.8+, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a5e5413f54ff781a9cb352f19977ddde40b686011d8f5d1b31231410f1d9302c
|
|
| MD5 |
7e8d02421af8cd15cb0a07b253af0ae5
|
|
| BLAKE2b-256 |
8a7bfc768c34ed20a557e3dae0046ea11cbdc1cf659f5d6dbdaa84c5d6722af2
|
File details
Details for the file sparkless-4.13.0-cp38-abi3-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: sparkless-4.13.0-cp38-abi3-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 36.5 MB
- Tags: CPython 3.8+, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c89f99c9968e7fca8bba3771320a3898fb49ef84fee7e56b963adc9bed43f3f2
|
|
| MD5 |
e4799e5eff5c526ef012da716420a7c8
|
|
| BLAKE2b-256 |
084bf05df8b77412c4cb4a4b979c0b85a247937fc1e6676450b3b42aa7c4684c
|
File details
Details for the file sparkless-4.13.0-cp38-abi3-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: sparkless-4.13.0-cp38-abi3-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 34.2 MB
- Tags: CPython 3.8+, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
252368f66f86eba1c72bf760273f27e1b3cc89152df8e2f63bb9c5f21a5b966e
|
|
| MD5 |
a5390f26164970afbe8e01a19399969c
|
|
| BLAKE2b-256 |
71b55b5476e5673cea893f7fb0f2d5d64f1e202023fa835e7dbd4db603ee87c3
|
File details
Details for the file sparkless-4.13.0-cp38-abi3-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: sparkless-4.13.0-cp38-abi3-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 34.2 MB
- Tags: CPython 3.8+, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5275b46cb6b5a1cd26426397e04b515c6eaaed62955b63d95978d016050d58ef
|
|
| MD5 |
6d71bc0498cc875abcf2bb182daae9e8
|
|
| BLAKE2b-256 |
b039f4589360bc5cd0d878f49d2ee38ef31593cce5055a9c208411a8c19c8d72
|
File details
Details for the file sparkless-4.13.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: sparkless-4.13.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 36.5 MB
- Tags: CPython 3.8+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3893fbfbf5b231bf367cfa03b9930d783d41aed5e6b7ab255b629f5e3a41bed7
|
|
| MD5 |
f231e920cca1248715963f113473c113
|
|
| BLAKE2b-256 |
74e26011d885765ff409c4335b9f358a1a75c47305696a929ae59c2ea956a393
|
File details
Details for the file sparkless-4.13.0-cp38-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: sparkless-4.13.0-cp38-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 32.8 MB
- Tags: CPython 3.8+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
182ef6c54d50152ee07ea25fb568f2cb47a4e633588c4695293a507e2d264bbc
|
|
| MD5 |
8ddd6ff03bfee0b78ad73f7861efb7c3
|
|
| BLAKE2b-256 |
00dcfd739b75122793ea8714905de900e6d756652a313f7fc3a5fe61f741472f
|
File details
Details for the file sparkless-4.13.0-cp38-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: sparkless-4.13.0-cp38-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 35.0 MB
- Tags: CPython 3.8+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
610a65370e618659032de5e8922e7f625d3f8b242658b133f6965a9b36f49faa
|
|
| MD5 |
0610655cf753b61a4d4124765cf19f6b
|
|
| BLAKE2b-256 |
7ec7aff2047f58a5bdc2f4714f0a19141f7cd56825283c2c5078f9b4e0935585
|