Add the Spark Connect Rust client to your project. The native Rust crate is the primary library; Python support is a drop-in replacement for PySpark.
Add the crate to your Cargo.toml:
[dependencies] apache-spark-connect = "4.2"
Enable optional features for additional functionality:
[dependencies] apache-spark-connect = { version = "4.2", features = ["datafusion", "polars"] }
Requirements:
protobuf-compiler (e.g., brew install protobuf on macOS, apt-get install protobuf-compiler on Linux)To build the native library locally:
git clone https://github.com/apache/spark-connect-rust cd spark-connect-rust cargo build --release
Build requirements:
rustup / cargo)protobuf-compilerpyspark-client-rust is a faster, drop-in replacement for the official pyspark Spark Connect client on PyPI. It uses the same pyspark import path and public API, but executes plan building, transport, and Arrow decoding in Rust for better performance.
All three PyPI packages that ship a Spark Connect client - pyspark, pyspark-client, and pyspark-client-rust - install into the same pyspark import directory, so only one can be active in an environment at a time. Do not install pyspark-client-rust on top of another one: pip does not remove the previous distribution's files first, so you would be left with a mix of both and a broken pyspark. Always uninstall the existing client first:
pip uninstall -y pyspark pyspark-client pip install pyspark-client-rust
!!! warning “Switching back to the reference client” For the same reason, uninstalling pyspark-client-rust is not enough to restore the reference client - it removes the shared pyspark files and leaves the environment with no working pyspark. Reinstall PySpark explicitly afterward:
```bash pip uninstall -y pyspark-client-rust pip install pyspark-client # or `pyspark` for full Apache Spark ```
Requirements:
Use it exactly like PySpark. For the complete Python API reference, see the official PySpark documentation.
from pyspark.sql import SparkSession spark = SparkSession.builder.remote("sc://localhost:15002").getOrCreate()
To build and install the Python wheel:
pip install maturin maturin build --release --out dist pip install dist/pyspark_client_rust-*.whl
Build requirements:
rustup / cargo)protobuf-compilerThe crate and package versions track Apache Spark: version 4.2.x supports Spark 4.2.0 and later. The wire protocol is identical to the reference client, so existing Spark Connect code works unchanged.