sparkctl
This package implements configuration and orchestration of Spark clusters with standalone cluster managers. This is useful in environments like HPCs where the infrastructure implemented by cloud providers, such as AWS, is not available. It is particularly helpful when users want to deploy Spark but do not have administrative control of the servers.
Example usage
There are two main ways to use this package:
First, allocate compute nodes. For example, with Slurm (1 compute node for the Spark master and 4 compute nodes for Spark workers):
$ salloc -t 01:00:00 -n4 --partition=shared --mem=30G : -N4 --account=<your-account> --mem=240G
- Configure a Spark cluster and run Spark jobs with
spark-submitorpyspark.
$ sparkctl configure
$ sparkctl start
$ spark-submit --master spark://$(hostname):7077 my-job.py
$ sparkctl stop
- Run Spark jobs in a Python script using the
sparkctllibrary to manage the cluster.
from sparkctl import ClusterManager, make_default_spark_config
config = make_default_spark_config()
mgr = ClusterManager(config)
with mgr.managed_cluster() as spark:
df = spark.createDataFrame([(x, x + 1) for x in range(1000)], ["a", "b"])
df.show()
Refer to the user documentation for a description of features and detailed usage instructions.
Project Status
The package is actively maintained and used at the National Laboratory of the Rockies (NLR). The software is primarily geared toward HPCs that use Slurm. It also supports a generic list of servers as long as the servers have access to a shared filesystem and are accessible via SSH without password login.
It would be straightforward to extend the functionality to support other HPC resource managers. Please submit an issue or idea or discussion if you have interest in this package but need that support.
Contributions are welcome.
Development
This project uses uv for environment management. Install the package with its development dependencies:
$ uv sync --extra dev
Lint, format, and type-check the code with ruff and ty:
$ uv run ruff check .
$ uv run ruff format --check .
$ uv run ty check
These checks also run as Git hooks via prek. Install the hooks once and then run them on demand:
$ uv run prek install
$ uv run prek run --all-files
Run the unit tests. These are fast, require no special resources, and are what CI runs:
$ uv run pytest -m "not integration"
The integration tests download a real Spark and Java distribution into tests/data/ and start a
real single-node Spark cluster, so they are slower and require network access and sufficient
memory. They are excluded from CI; run them locally with:
$ uv run pytest -m integration
Run the complete suite (unit and integration tests) with uv run pytest.
License
sparkctl is released under a BSD 3-Clause license.
Software Record
This package is developed under NLR Software Record SWR-25-109.
Metadata
Release files for sparkctl 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| sparkctl-0.5.0.tar.gz | 47.3 kB | With provenance | Details for sparkctl-0.5.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| sparkctl-0.5.0-py3-none-any.whl | Python 3 | none | any | Details for sparkctl-0.5.0-py3-none-any.whl |
Total release size: 94.5 kB
Release files / sparkctl-0.5.0.tar.gz
| Download URL | sparkctl-0.5.0.tar.gz |
|---|---|
| Size | 47.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d4242362fc87694911a3df5b440e0c19737f5de241734df2fe8db2a602327477
|
|
BLAKE2b-256 checksum How to use checksums |
083d4c1ced55d58a80547af7e997449917ed9bff98640e6d8dfa1cdcc3b1f9e3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 14, 2026.
Transparency logRelease files / sparkctl-0.5.0-py3-none-any.whl
| Download URL | sparkctl-0.5.0-py3-none-any.whl |
|---|---|
| Size | 47.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5d9c4963835ce482b3bfc94e2dd2529c33cd66b20287e2e6e39525eb1aa4a47f
|
|
BLAKE2b-256 checksum How to use checksums |
6ebda6ecd44c46f4a692d0420fe30c69c33e548d56fbe871f21b062515aafbbf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 14, 2026.
Transparency logSecurity for sparkctl 0.5.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for sparkctl-0.5.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 14, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.