Skip to content

apache/datafusion

Folders and files

NameName
Last commit message
Last commit date

Latest commit

744b262 · Mar 22, 2022
Mar 22, 2022
Mar 22, 2022
Mar 22, 2022
Mar 22, 2022
Jan 17, 2022
Mar 12, 2022
Mar 22, 2022
Mar 22, 2022
Mar 22, 2022
Mar 22, 2022
Mar 9, 2022
Mar 22, 2022
Mar 22, 2022
Mar 22, 2022
Mar 22, 2022
Mar 12, 2022
Nov 20, 2021
May 26, 2021
Jan 4, 2022
Sep 15, 2021
Nov 15, 2021
Mar 12, 2020
May 3, 2021
Jan 17, 2022
Jun 12, 2019
Nov 14, 2021
Nov 15, 2021
Apr 19, 2021
Sep 19, 2019
Mar 30, 2021
Jun 23, 2017
Mar 12, 2022
May 24, 2021
Mar 12, 2022
Mar 22, 2022
Apr 1, 2021
Jul 15, 2019
Mar 9, 2022
Aug 18, 2016
Aug 24, 2021
Oct 27, 2021

Repository files navigation

DataFusion

DataFusion is an extensible query execution framework, written in Rust, that uses Apache Arrow as its in-memory format.

DataFusion supports both an SQL and a DataFrame API for building logical query plans as well as a query optimizer and execution engine capable of parallel execution against partitioned data sources (CSV and Parquet) using threads.

DataFusion also supports distributed query execution via the Ballista crate.

Use Cases

DataFusion is used to create modern, fast and efficient data pipelines, ETL processes, and database systems, which need the performance of Rust and Apache Arrow and want to provide their users the convenience of an SQL interface or a DataFrame API.

Why DataFusion?

  • High Performance: Leveraging Rust and Arrow's memory model, DataFusion achieves very high performance
  • Easy to Connect: Being part of the Apache Arrow ecosystem (Arrow, Parquet and Flight), DataFusion works well with the rest of the big data ecosystem
  • Easy to Embed: Allowing extension at almost any point in its design, DataFusion can be tailored for your specific usecase
  • High Quality: Extensively tested, both by itself and with the rest of the Arrow ecosystem, DataFusion can be used as the foundation for production systems.

Known Uses

Projects that adapt to or serve as plugins to DataFusion:

Here are some of the projects known to use DataFusion:

(if you know of another project, please submit a PR to add a link!)

Example Usage

Please see example usage to find how to use DataFusion.

Roadmap

Please see Roadmap for information of where the project is headed.

Architecture Overview

There is no formal document describing DataFusion's architecture yet, but the following presentations offer a good overview of its different components and how they interact together.

  • (March 2021): The DataFusion architecture is described in Query Engine Design and the Rust-Based DataFusion in Apache Arrow: recording (DataFusion content starts ~ 15 minutes in) and slides
  • (February 2021): How DataFusion is used within the Ballista Project is described in *Ballista: Distributed Compute with Rust and Apache Arrow: recording

User's guide

Please see User Guide for more information about DataFusion.

Contribution Guide

Please see Contribution Guide for information about contributing to DataFusion.