datafusion-contrib/datafusion-distributed

Library for bringing distributed capabilities to Apache DataFusion

Rust

139

362 commits

updated Sep 22, 2026

See the code

README

DataFusion Distributed

Crates.io Docs Apache licensed Discord chat

Scale Apache DataFusion across a cluster — without leaving the DataFusion you already know.

[!NOTE] This project is not part of Apache DataFusion.

DataFusion Distributed is a toolkit that extends Apache DataFusion with distributed query execution. It aims for a developer experience as close as possible to vanilla DataFusion while staying unopinionated about your networking stack.

It's not an out-of-the-box distributed engine — it's a library for building one, with sane defaults for the common case of file-based data sources. A distributed plan is a normal DataFusion physical plan, with a few extra nodes that stream Arrow data between machines, so you can take an existing single-node DataFusion system and add distributed execution with minimal changes.

Getting started

Going distributed takes exactly three things:

  1. Enable the distributed planner on your session.
  2. Tell it where your workers are.
  3. Run the worker gRPC servers.

The Quick start walks through all three in a few minutes. For everything beyond that — resolving workers dynamically, distributing your own custom ExecutionPlans, collecting runtime metrics, and more — see the full documentation.

Benchmarks

DataFusion Distributed consistently outperforms other distributed query engines across TPC-H and TPC-DS. The chart below shows how much slower each engine is relative to DataFusion Distributed (lower is better):

How much slower than DataFusion Distributed?

Per-dataset totals
Datasetdf-distBallistaSparkTrinoQueries compared
TPC-H SF17s11s30s18s22
TPC-H SF1010s42s51s33s22
TPC-H SF10042s237s261s93s19
TPC-DS SF129s72s101s85s67

TPC-H SF1 TPC-H SF10 TPC-H SF100 TPC-DS SF1

Conditions. All engines ran on the same cluster: 12 AWS EC2 c5n.2xlarge instances (8 vCPUs and 21 GiB of memory each, with up to 25 Gbps networking) reading Parquet files stored in Amazon S3. Each engine's total is the sum of per-query median (p50) latencies over the queries that all compared engines completed successfully; lower is better.

The benchmarking code is public and open for anyone to easily reproduce. It uses AWS CDK for automating the creation of the benchmarking cluster so that anyone can reproduce the same results in their own AWS account. The code can be found in the datafusion-distributed-dev-tools repository.

Core tenets of the project

  • Be as close as possible to vanilla DataFusion, providing a seamless integration with existing DataFusion systems and a familiar API for building applications.
  • Unopinionated about networking. This crate does not take any opinion about the networking stack, and users are expected to leverage their own infrastructure for hosting DataFusion nodes.
  • No coordinator-worker split. To keep infrastructure simple, any node can act as a coordinator or a worker.
  • A library, not an engine. The goal is to provide the tools for people to build distributed engines, not being one.

Documentation

arrow
datafusion
distributed
distributed-computing
distributed-systems

Contributors

(top 30 of 38)

gabotechs

218 commits

jayshrivastava

30 commits

EdsonPetry

13 commits

Rich-T-kid

11 commits

datafusion-contrib/datafusion-distributed

Library for bringing distributed capabilities to Apache DataFusion

Rust

139

362 commits

updated Sep 22, 2026

See the code

README

DataFusion Distributed

Crates.io Docs Apache licensed Discord chat

Scale Apache DataFusion across a cluster — without leaving the DataFusion you already know.

[!NOTE] This project is not part of Apache DataFusion.

DataFusion Distributed is a toolkit that extends Apache DataFusion with distributed query execution. It aims for a developer experience as close as possible to vanilla DataFusion while staying unopinionated about your networking stack.

It's not an out-of-the-box distributed engine — it's a library for building one, with sane defaults for the common case of file-based data sources. A distributed plan is a normal DataFusion physical plan, with a few extra nodes that stream Arrow data between machines, so you can take an existing single-node DataFusion system and add distributed execution with minimal changes.

Getting started

Going distributed takes exactly three things:

  1. Enable the distributed planner on your session.
  2. Tell it where your workers are.
  3. Run the worker gRPC servers.

The Quick start walks through all three in a few minutes. For everything beyond that — resolving workers dynamically, distributing your own custom ExecutionPlans, collecting runtime metrics, and more — see the full documentation.

Benchmarks

DataFusion Distributed consistently outperforms other distributed query engines across TPC-H and TPC-DS. The chart below shows how much slower each engine is relative to DataFusion Distributed (lower is better):

How much slower than DataFusion Distributed?

Per-dataset totals
Datasetdf-distBallistaSparkTrinoQueries compared
TPC-H SF17s11s30s18s22
TPC-H SF1010s42s51s33s22
TPC-H SF10042s237s261s93s19
TPC-DS SF129s72s101s85s67

TPC-H SF1 TPC-H SF10 TPC-H SF100 TPC-DS SF1

Conditions. All engines ran on the same cluster: 12 AWS EC2 c5n.2xlarge instances (8 vCPUs and 21 GiB of memory each, with up to 25 Gbps networking) reading Parquet files stored in Amazon S3. Each engine's total is the sum of per-query median (p50) latencies over the queries that all compared engines completed successfully; lower is better.

The benchmarking code is public and open for anyone to easily reproduce. It uses AWS CDK for automating the creation of the benchmarking cluster so that anyone can reproduce the same results in their own AWS account. The code can be found in the datafusion-distributed-dev-tools repository.

Core tenets of the project

  • Be as close as possible to vanilla DataFusion, providing a seamless integration with existing DataFusion systems and a familiar API for building applications.
  • Unopinionated about networking. This crate does not take any opinion about the networking stack, and users are expected to leverage their own infrastructure for hosting DataFusion nodes.
  • No coordinator-worker split. To keep infrastructure simple, any node can act as a coordinator or a worker.
  • A library, not an engine. The goal is to provide the tools for people to build distributed engines, not being one.

Documentation

arrow
datafusion
distributed
distributed-computing
distributed-systems

Contributors

(top 30 of 38)

gabotechs

218 commits

jayshrivastava

30 commits

EdsonPetry

13 commits

Rich-T-kid

11 commits

Languages

Rust

99.9%