mrkeyoor.com_
Thu 24 Sept 23:59 UTC
Dataevaluationupdated 26 Aug 2026

datafusion review

Apache DataFusion is a Rust query engine for developers building databases, analytics systems, and data pipelines. It supplies SQL and DataFrame interfaces over Apache Arrow data, with extension points for planners, file formats, functions, and execution operators.

+28stars / 7d
Verdict

Our DataFusion harness installed 35 Python packages in 16 seconds, but its build failed 4 seconds later and no tests ran, so that run does not establish a working Rust build. DataFusion remains a strong candidate for teams that specifically need an embeddable Arrow-based query engine and can evaluate it through the documented Cargo path. Choose DuckDB or Spark when the requirement is a finished analytical database or distributed platform rather than engine internals.

We ran it

Lab card: what happened when we ran datafusionScreenshot of datafusion (datafusion.apache.org)
Install✓ · 16s35 packages · 37 MB
Build✗ · 4s
Testsn/ano test script
Known vulns0(pip-audit)
Repo5181 files~952,983 lines of source · 879.3 MB · 14 CI workflows

Answers from our run

Does datafusion build from source?

Dependencies installed in 16 seconds (35 packages), and the build failed. We cloned commit c699996 into a clean Debian container with 3 CPUs and no project-specific setup.

Does datafusion have tests you can run?

Not through a standard command: the project exposes no test script or target that our harness could run.

Does datafusion have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use datafusion?

Python users expecting this repository to be the supported Python package: the README sends them to the separate apache/datafusion-python project.

What are the alternatives to datafusion?

DuckDB, Polars, Apache Spark. Our DataFusion harness installed 35 Python packages in 16 seconds, but its build failed 4 seconds later and no tests ran, so that run does not establish a working Rust build.

Setup2/5Measured build failed after a 16-second, 35-package install
Docs5/5Architecture, Rust APIs, formats, features, and bindings are mapped
Community5/59,200 stars with same-day issue and pull request activity
Maturity4/5Apache project with broad APIs; public methods still evolve

Discussed on

  1. hnEmbedding user-defined indexes in Apache Parquet144 points
  2. hnShow HN: Denormalized – Embeddable Stream Processing in Rust and DataFusion125 points
  3. hnDataFusion Comet: Apache Spark Accelerator107 points
  4. hnApache Arrow Datafusion 5.0.0 release78 points
  5. hnApache Arrow DataFusion: A Fast, Embeddable, Modular Analytic Query Engine25 points

Who it’s for

Rust teams embedding a query planner and execution engine into a data product.
Database builders who need SQL over Arrow, Parquet, CSV, JSON, or Avro.
Engineers creating domain-specific query languages, data sources, functions, or operators.
Platform teams prepared to choose a separate binding or distributed layer when needed.

Who it’s NOT for

Python users expecting this repository to be the supported Python package: the README sends them to the separate apache/datafusion-python project.
Teams needing a distributed cluster engine directly from this crate: the README points to DataFusion Ballista for execution across nodes.
Applications demanding a permanently frozen Rust API: the project says public methods evolve and are generally deprecated before removal.
Developers looking for a small dependency surface by default: compression, crypto, datetime, encoding, Parquet, SQL, regex, Unicode, unparsing, and recursion protection are default crate features.
Buyers who want our lab run to prove query speed: our supplied run did not execute a query benchmark, and its build failed before tests.

Setup reality

Our harness treated commit c699996 as a Python project. It installed 35 packages in 16 seconds, using 37 MB, then the build failed with exit 1 after 4 seconds. No failing log tail was supplied, so we cannot attribute the failure. No test script or target was found, and tests were skipped. Pip-audit found 0 known vulnerabilities.

Upstream describes this repository as a Rust crate, not the Python binding. Rust users add DataFusion through Cargo; Python and Java users are directed to separate projects. Custom storage, object stores, cloud credentials, or services depend on the system embedding the engine.

The checkout was 879.3 MB with about 952,983 source lines. Default crate features cover several formats and expression families, and API evolution follows deprecation guidelines rather than a no-change promise.

DataFusion is a query-engine kit, not a finished database

Apache DataFusion supplies the machinery developers normally have to assemble before a data product can answer SQL: parsing and planning, logical and physical optimization, and a columnar execution engine over Apache Arrow. The README describes streaming, multithreaded, vectorized execution and partitioned data sources. It also emphasizes customization, so teams can add data sources, query languages, functions, and operators instead of accepting one fixed database interface.

commit c699996 was large enough to demand planning before contribution. Our checkout held 5,181 files, about 952,983 lines of source, and occupied 879.3 MB. GitHub identifies Rust as the primary language. The repository exposed 14 CI workflow files but no root Dockerfile or tests directory in our scan. Those signals fit a substantial engine workspace, even though the lab's automatic path identified and attempted a Python build.

Rust is the main route, while Python lives elsewhere

The README calls DataFusion an extensible Rust query engine and links directly to Cargo documentation, Rust examples, and the Rust DataFrame API. Python and Java users are sent to separate binding repositories. Spark acceleration lives in DataFusion Comet, and distributed execution across a cluster lives in Ballista. That separation is useful: adopting this crate does not automatically deliver every language binding or deployment topology carrying the DataFusion name.

Out of the box, the engine reads CSV, Parquet, JSON, and Avro and exposes SQL plus DataFrame APIs. The crate's default features include 10 named groups covering nested expressions, compression, cryptography, dates, encoding, Parquet, SQL, regular expressions, Unicode, SQL unparsing, and recursion protection. Optional flags add Avro, backtraces, Parquet encryption, and Serde support. Teams sensitive to compile time or binary size should inspect which defaults their product needs.

What happened when we ran it

Our harness used a Python 3.12 Bookworm environment for commit c699996. Installation succeeded in 16 seconds, adding 35 packages and using 37 MB on disk. The build then failed with exit code 1 after 4 seconds. The supplied measurement did not include the failing log tail, so it would be speculation to name a missing compiler, dependency, command, or source defect.

No test script or target was detected, so the harness skipped tests. Pip-audit reported 0 known vulnerabilities in the Python packages it installed. These results do not say that DataFusion's Rust tests are absent or failing; they say our automatic run did not reach them. A valid adoption check should start from the project's documented Cargo instructions and record that separate build and test evidence rather than reinterpret this mismatched path as success.

Arrow data is the common contract for extension

DataFusion uses Apache Arrow as its in-memory representation, which is the main architectural commitment an embedding system accepts. Custom sources and operators exchange columnar batches through that model. The README also describes a full planner and execution engine, letting a product begin above the storage and query mechanics instead of implementing them from scratch. That is appealing for domain databases, but it ties extension code to DataFusion and Arrow APIs that the team must track.

The project states that public methods evolve as the engine improves. Its policy generally deprecates methods before removal, which is better than silent breakage but weaker than a permanent API freeze. With nearly 953,000 measured source lines and many default features, upgrades deserve compile checks against product-specific planners, expressions, and data-source adapters. A passing upstream release alone cannot exercise a private operator or query language.

Same-day issue work matters more than a missing GitHub release

GitHub showed 9,200 stars, 2,099 combined open issues and pull requests, and a last push on August 26, 2026. The current activity list included same-day fixes for struct casts, percentile precision, pruning, arithmetic negation, FFI planning, and hash-join memory. Two open issues about reserved names and narrowing casts were also updated that day. The combined count includes pull requests and should not be described as a bug total.

The GitHub latest-release endpoint returned no release object. That is not evidence that DataFusion is abandoned, because repository and issue activity were current on August 26 and the README links to the crate distribution. The project also points contributors to a 2026 Q3-Q4 roadmap discussion. Consumers should follow the crate and Apache release channels they actually install rather than use GitHub's missing latest-release record as a health proxy.

Pick DataFusion when customization justifies engine ownership

DataFusion makes sense when a team needs a query engine inside its own system and intends to control planning, functions, storage, or execution. The Apache-2.0 license, Arrow model, SQL support, and documented extension surface form a credible base. Python users should start with the separate binding, while cluster users should evaluate Ballista or another distributed engine.

Our failed 4-second build prevents a clean setup recommendation from this lab run. It also exposes an automation mismatch worth correcting in any evaluation: the upstream project is Rust, yet our harness installed Python packages. Before adoption, run the Cargo path on the intended toolchain, select crate features deliberately, execute relevant upstream tests, and add product queries that exercise private extensions. Without that evidence, the repository's scope and activity are promising facts, not proof that it fits a specific system.

Alternatives

ProjectWhat it isPick it when
DuckDB gh↗An embeddable analytical database with SQL and broad client support.pick this instead when you want a ready analytical database rather than a Rust engine to customize.
Polars gh↗A Rust DataFrame engine with popular Python bindings and a columnar API.pick this instead when DataFrame work is primary and SQL-engine extension points are secondary.
Apache Spark gh↗A distributed processing engine with SQL, streaming, and mature cluster operations.pick this instead when an end-user distributed engine matters more than embedding a Rust query core.

What people are saying

  1. [github-trending] apache/datafusion
  2. [hackernews] Algorithms on billion-scale graph using 10GB RAM: I love DataFusion

Sources

  1. Apache DataFusion README
  2. Apache DataFusion repository activity
  3. DataFusion architecture guide
  4. DataFusion 2026 Q3-Q4 roadmap discussion

More data reviews

go-stock · sqlitebrowser · hydradb · DouYin_Spider · helix-db · abu · the whole board →