Dask is a Python library for parallel and distributed computing that provides pandas-compatible DataFrames and NumPy-compatible Arrays over datasets larger than memory, running locally or across a cluster.
A scheduler and workers: LocalCluster inside one machine, dask-jobqueue on SLURM or PBS, a Kubernetes operator, or Coiled as the managed option. Adaptive scaling sizes the cluster from pending work; workers spill to disk under memory pressure and pause before dying. RAPIDS (cuDF, CuPy) supplies the GPU execution.
How Dask answers the questions Batch Compute turns on.
| How it works | |
| APIs | pandas and NumPy APIs; Delayed and Futures for custom pipelines |
| Data model | DataFrames and arrays mirroring pandas and NumPy |
| Execution model | Dynamic task graph, scheduled per task; DataFrames have run through a query optimizer since 2024.03 |
| Larger than memory | Workers spill least-recently-used data to disk from 60% managed memory, pause at 80% and are terminated at 95% |
| Running it | |
| Runtime | Native Python |
| GPU support | Not Dask's own: it schedules Python functions and RAPIDS supplies the GPU ones, cuDF and CuPy, with Dask-CUDA managing devices |
| What you run | A scheduler and workers: a LocalCluster on one machine, the Kubernetes operator, dask-jobqueue on SLURM or PBS, or Coiled |
| Scaling | cluster.adapt() sizes from pending task runtime against a five-second target; a retiring worker moves its data elsewhere first |
| Failure recovery | Tasks rerun elsewhere and lost results rebuild from the graph, but scattered data dies with the worker and the scheduler has no persistence, if it goes, running computations go with it |
| Connections | |
| Table formats | Parquet, ORC, CSV, JSON, HDF5 and SQL; no lakehouse format natively, Delta needs the third-party dask-deltatable |
vs Dask: Self-hosted · Managed · Operational complexity: High · Java
vs Dask: Self-hosted · Managed · Operational complexity: High · Batch · Streaming · Scala, Python, Java
vs Dask: Self-hosted · Free · Rust