Skip to main content

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
  1. Configure a Spark cluster and run Spark jobs with spark-submit or pyspark.
$ sparkctl configure
$ sparkctl start
$ spark-submit --master spark://$(hostname):7077 my-job.py
$ sparkctl stop
  1. Run Spark jobs in a Python script using the sparkctl library 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)

Source distribution for sparkctl 0.5.0
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)

Table of built distributions (wheels) for sparkctl 0.5.0
File Interpreter ABI Platform Actions
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 log

Release 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 log

Security 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.

Select from 2 files

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 log

A 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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page