# apache/datafusion

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/apache-datafusion).**

8,908 stars · 2,176 forks · Rust · Apache-2.0

## Links

- GitHub: https://github.com/apache/datafusion
- Homepage: https://datafusion.apache.org/
- awesome-repositories: https://awesome-repositories.com/repository/apache-datafusion.md

## Topics

`arrow` `big-data` `dataframe` `datafusion` `olap` `python` `query-engine` `rust` `sql`

## Description

Apache DataFusion is an extensible, columnar SQL query engine that runs embedded within a host application without requiring a separate server process. It processes data in columnar batches using Apache Arrow for memory-efficient analytics, and can scale analytic workloads across multiple nodes for parallel execution. The engine supports both SQL and DataFrame queries through a modular, streaming architecture that allows custom operators, data sources, functions, and optimizer rules.

The engine distinguishes itself through its modular extension framework, which enables building custom query engines by modifying all extension points including data sources, query languages, and custom operators. It provides a lazy DataFrame API that defines query pipelines as deferred transformations, optimized and executed only when results are collected. DataFusion also supports Substrait interchange for passing query plans across language and system boundaries, and includes language bindings for Python, C, Ruby, and Java.

The system handles data ingestion from multiple file formats including Parquet, CSV, JSON, and Avro, as well as in-memory data sources. It supports full DDL and DML operations for creating and modifying tables, views, and schemas. DataFusion includes a rule-based query optimizer that applies filter pushdown, join reordering, and expression simplification automatically, and provides query plan analysis through EXPLAIN commands. The engine can also replace Apache Spark's native execution engine to improve query performance on Arrow data.

Documentation and API governance ensure that public functions are marked with deprecation notices and remain available for six major versions or six months before removal.

## Tags

### Data & Databases

- [SQL Query Execution](https://awesome-repositories.com/f/data-databases/sql-query-execution.md) — Runs SQL queries against data with a full query planner and columnar streaming engine.
- [Embedded SQL Query Engines](https://awesome-repositories.com/f/data-databases/sql-query-execution-engines/embedded-sql-query-engines.md) — Runs as an embedded SQL engine within a host application without requiring a separate server process. ([source](https://datafusion.apache.org/user-guide/introduction.html))
- [Apache Arrow Processing](https://awesome-repositories.com/f/data-databases/apache-arrow-processing.md) — Stores and processes data in Apache Arrow's columnar format for zero-copy sharing and vectorized operations.
- [Streaming Columnar Executions](https://awesome-repositories.com/f/data-databases/columnar-analytics/in-database-columnar-engines/streaming-columnar-executions.md) — Processes data in Arrow columnar batches through a streaming pipeline without materializing intermediate results.
- [Columnar Engines](https://awesome-repositories.com/f/data-databases/columnar-engines.md) — Processes data in columnar batches using Apache Arrow for memory-efficient analytics.
- [Extensible Query Execution Frameworks](https://awesome-repositories.com/f/data-databases/custom-query-execution/extensible-query-execution-frameworks.md) — Provides a modular extension framework for building custom query engines with custom operators, data sources, and functions.
- [Dataframe Engines](https://awesome-repositories.com/f/data-databases/dataframe-engines.md) — Provides a lazy DataFrame API for building and executing analytic queries programmatically.
- [Distributed Execution Coordinators](https://awesome-repositories.com/f/data-databases/distributed-execution-coordinators.md) — Scales analytic workloads across a cluster by splitting and coordinating query fragments on multiple nodes. ([source](https://datafusion.apache.org/llms.txt#apache-datafusion))
- [Distributed Query Engines](https://awesome-repositories.com/f/data-databases/distributed-query-engines.md) — Splits and coordinates analytic workloads across multiple nodes for parallel execution.
- [Distributed Query Processing](https://awesome-repositories.com/f/data-databases/distributed-query-processing.md) — Scales analytic workloads across a cluster by splitting and coordinating query fragments.
- [Columnar File Format Loading](https://awesome-repositories.com/f/data-databases/json-editors/data-loading/multi-format-file-loading/columnar-file-format-loading.md) — Loads data from Parquet, Avro, and compressed formats directly into Arrow columnar memory for analysis. ([source](https://datafusion.apache.org/user-guide/introduction.html))
- [Lazy Query Pipelines](https://awesome-repositories.com/f/data-databases/lazy-query-pipelines.md) — Defines query pipelines as deferred transformations that are optimized and executed only when results are collected.
- [Query Execution Pipelines](https://awesome-repositories.com/f/data-databases/query-execution-pipelines.md) — Constructs query pipelines as deferred transformations that are optimized and executed only when results are collected. ([source](https://datafusion.apache.org/user-guide/dataframe.html))
- [Relational Query Optimizers](https://awesome-repositories.com/f/data-databases/query-plan-optimizations/relational-query-optimizers.md) — Applies advanced optimizations like filter pushdown, join reordering, and expression simplification automatically. ([source](https://datafusion.apache.org/user-guide/introduction.html))
- [Rule-Based Plan Optimizations](https://awesome-repositories.com/f/data-databases/query-plan-optimizations/rule-based-plan-optimizations.md) — Applies a configurable chain of rewrite rules for filter pushdown, join reordering, and expression simplification.
- [SQL Query Execution Engines](https://awesome-repositories.com/f/data-databases/sql-query-execution-engines.md) — An extensible, columnar query engine that executes SQL and DataFrame queries with a modular, streaming architecture.
- [Multi-Format Data Loading](https://awesome-repositories.com/f/data-databases/tabular-data-frameworks/csv-data-loaders/multi-source-csv-loading/multi-format-data-loading.md) — Reads and writes data in Parquet, CSV, JSON, and Avro formats without additional configuration.
- [Tabular DataFrames](https://awesome-repositories.com/f/data-databases/tabular-dataframes.md) — Constructs and manipulates tabular data through a lazy DataFrame API with filtering, aggregation, and joins. ([source](https://datafusion.apache.org/))
- [Data Transformation Functions](https://awesome-repositories.com/f/data-databases/data-transformation-functions.md) — Applies aggregate, window, and scalar functions to compute statistics, rankings, and transformations on data. ([source](https://datafusion.apache.org/user-guide/sql/index.html))
- [Execution Plan Analysis](https://awesome-repositories.com/f/data-databases/database-query-execution/execution-plan-analysis.md) — Displays the physical plan and execution metrics of a query using EXPLAIN and EXPLAIN ANALYZE. ([source](https://datafusion.apache.org/user-guide/sql/index.html))
- [Distributed Query Fragmenters](https://awesome-repositories.com/f/data-databases/distributed-query-fragmenters.md) — Splits physical plans into parallel fragments that can be scheduled and executed across multiple nodes.
- [File Data Ingestion](https://awesome-repositories.com/f/data-databases/file-data-ingestion.md) — Reads structured data from file formats such as CSV into a DataFrame for further querying and analysis. ([source](https://datafusion.apache.org/user-guide/dataframe.html))
- [Cloud Object Storage](https://awesome-repositories.com/f/data-databases/file-storage-systems/cloud-object-storage.md) — Reads data asynchronously from AWS S3, Azure Blob Storage, and Google Cloud Storage. ([source](https://datafusion.apache.org/user-guide/introduction.html))
- [In-Memory Data Loading](https://awesome-repositories.com/f/data-databases/in-memory-data-loading.md) — Creates a DataFrame from programmatically defined rows or Arrow record batches without external storage. ([source](https://datafusion.apache.org/user-guide/dataframe.html))
- [Data Manipulation Operations](https://awesome-repositories.com/f/data-databases/insert-operations/data-manipulation-operations.md) — Supports INSERT and COPY commands for modifying data in tables. ([source](https://datafusion.apache.org/user-guide/sql/index.html))
- [Object Store Streaming Readers](https://awesome-repositories.com/f/data-databases/object-store-streaming-readers.md) — Reads data asynchronously from cloud storage services using range requests and connection pooling.
- [Substrait Plan Interchange](https://awesome-repositories.com/f/data-databases/query-planning/substrait-plan-interchange.md) — Passes query plans across language and system boundaries using the Substrait interchange format.
- [Substrait Plan Interchanges](https://awesome-repositories.com/f/data-databases/query-planning/substrait-plan-interchanges.md) — Serializes and deserializes query plans using the Substrait binary format for cross-language portability.
- [Expression Functions](https://awesome-repositories.com/f/data-databases/regular-expression-functions/expression-functions.md) — Applies built-in functions for nested types, cryptography, date/time, encoding, regular expressions, and Unicode operations. ([source](https://cdn.jsdelivr.net/gh/apache/datafusion@main/README.md))
- [DDL Executions](https://awesome-repositories.com/f/data-databases/type-safe-data-abstractions/ddl-executions.md) — Executes CREATE, ALTER, and DROP operations on database objects through a type-safe API. ([source](https://datafusion.apache.org/user-guide/sql/index.html))

### Part of an Awesome List

- [Query Engine Extensions](https://awesome-repositories.com/f/awesome-lists/devtools/native-integration/query-engine-extensions.md) — Supports custom operators, data sources, functions, and optimizer rules for domain-specific needs.

### Software Engineering & Architecture

- [Modular Extensibility Frameworks](https://awesome-repositories.com/f/software-engineering-architecture/modular-extensibility-frameworks.md) — Provides trait-based extension points for custom data sources, operators, optimizer rules, and functions.
- [Substrait Plan Interchanges](https://awesome-repositories.com/f/software-engineering-architecture/agnostic-data-interchange-formats/substrait-plan-interchanges.md) — Implements the Substrait interchange format to pass query plans across language and system boundaries. ([source](https://datafusion.apache.org/user-guide/introduction.html))

### Artificial Intelligence & ML

- [Native Spark Accelerators](https://awesome-repositories.com/f/artificial-intelligence-ml/data-preparation/gpu-accelerated-pipelines/spark-pipeline-acceleration/native-spark-accelerators.md) — Replaces Apache Spark's native execution engine to improve query performance on Arrow data. ([source](https://datafusion.apache.org/llms.txt#apache-datafusion))

### Programming Languages & Runtimes

- [Language Bindings](https://awesome-repositories.com/f/programming-languages-runtimes/language-bindings.md) — Provides official language bindings for Python, C, Ruby, and Java to call the query engine directly. ([source](https://datafusion.apache.org/user-guide/introduction.html))
