Skip to content

chore: remove the datafusion-spark crate (moving to apache/datafusion-spark) - #27337

Merged
andygrove merged 6 commits into
apache:mainfrom
andygrove:remove-datafusion-spark
Nov 12, 2026
Merged

andygrove merged 6 commits into
apache:mainfrom
andygrove:remove-datafusion-spark

Conversation

@andygrove

Copy link
Copy Markdown
Member

Which issue does this PR close?

Rationale for this change

As agreed in apache/datafusion-spark#87, datafusion-spark is moving to the new apache/datafusion-spark repository, along with its git history. datafusion-spark 56.0.0 is the last release from this repository (branch-56 keeps the crate), and 57.0.0 will be released from the new one.

This stays a draft until the code has been imported into apache/datafusion-spark. Open PRs that touch these files have a comment pointing to apache/datafusion-spark#87.

What changes are included in this PR?

  • Removes the crate (datafusion/spark), its sqllogictest files (datafusion/sqllogictest/test_files/spark) and the audit-datafusion-spark-expression agent skill, all of which move to the new repository.
  • datafusion-cli: removes the --spark flag and its test. Without the crate, the flag could only switch the SQL dialect, which SET datafusion.sql_parser.dialect = 'spark' already does. The CLI builds its context with SessionContext::new_with_config_rt again, as it did before feat(cli): add opt-in Spark function registration #24179.
  • datafusion-sqllogictest: removes the Spark session setup for files under spark/. The Spark result formatting in the DataFusion engine stays, so the new repository can reuse the published engine.
  • CI: removes the cargo check datafusion-spark features job, its required check in .asf.yaml, its entries in ci/scripts/check_rust_workflow_skips.py, and the labeler rule.
  • Docs: points the Spark functions page and the contributor how-to at the new repository, removes --spark from the CLI usage page and the crate from the release publish steps, and adds a 57.0.0 upgrade note.

SparkOptions (datafusion.spark.*) stays in datafusion-common, because datafusion-spark reads it. Moving it into the crate as a ConfigExtension can be a follow-up.

What is the testing strategy for this PR?

This PR removes code and adds no tests. I ran these locally with stable Rust 1.97, because the pinned 1.99.1 isn't available on my machine:

  • cargo check --workspace --all-targets
  • both clippy passes from ci/scripts/rust_clippy.sh with -D warnings. I allowed clippy::from_iter_instead_of_collect, unfulfilled_lint_expectations and unknown_lints, which only fire on 1.97 and only in code this PR doesn't touch.
  • cargo fmt, taplo, typos, prettier, the generated and examples docs checks, and the .asf.yaml and workflow-skip validators
  • the extended test suite from CLAUDE.md: 13,332 passed, 0 failed, including all 304 sqllogictest files
  • cargo test --profile ci -p datafusion-cli: 115 passed, 0 failed

Are there any user-facing changes?

Yes:

  • datafusion-cli --spark is removed.
  • datafusion-spark is published from apache/datafusion-spark starting with 57.0.0. The crate name doesn't change.

@andygrove andygrove added the api change Changes the API exposed to users of the crate label Nov 11, 2026
@github-actions github-actions Bot added documentation Improvements or additions to documentation development-process Related to development process of DataFusion sqllogictest SQL Logic Tests (.slt) common Related to common crate spark Changes to datafusion-spark crate labels Nov 11, 2026
@@ -2249,8 +2249,8 @@ impl<'a> TryFrom<&'a FormatOptions> for arrow::util::display::FormatOptions<'a>
}

config_namespace! {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wondering can we move this as well

@comphead comphead Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it can be separate PR, it doesn't look straight forward and critical

@comphead comphead left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @andygrove good negative PR.
Nice followup would be to move SparkOptions from DF config as well

@@ -2249,8 +2249,8 @@ impl<'a> TryFrom<&'a FormatOptions> for arrow::util::display::FormatOptions<'a>
}

config_namespace! {

@comphead comphead Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it can be separate PR, it doesn't look straight forward and critical

@alamb

alamb commented Nov 12, 2026

Copy link
Copy Markdown
Contributor

Looks like we need to update the required checks to merge

@andygrove

Copy link
Copy Markdown
Member Author

Branch protection comes from .asf.yaml on main, so the removed cargo check datafusion-spark features check is still required here. I opened #27375 to drop it from the required checks first. Once that merges I'll rebase this PR.

The check is no longer required, so check_rust_workflow_skips.py no
longer allows it to skip on pushes to main.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@andygrove
andygrove disabled auto-merge November 12, 2026 17:11
andygrove added a commit to andygrove/datafusion that referenced this pull request Nov 12, 2026
…hecks (apache#27375)

## Which issue does this PR close?

- Related to apache#27337.

## Rationale for this change

apache#27337 removes the `datafusion-spark` crate, along with the `cargo check
datafusion-spark features` CI job. ASF applies branch protection from
the `.asf.yaml` on `main`, so while that check is still listed there,
apache#27337 can't merge: the check it's waiting on never runs.

## What changes are included in this PR?

- Removes `cargo check datafusion-spark features` from
`required_status_checks` in `.asf.yaml`.
- Removes the job from `POST_MERGE_SKIPPED_JOBS` in
`check_rust_workflow_skips.py`. The script only lets required checks
skip on pushes to `main`, because the merge queue only runs required
checks.
- Drops the post-merge clause from the job's `if:` in `rust.yml`. The
same script requires each job's `if:` to match its skip sets exactly, so
leaving the job out of `POST_MERGE_SKIPPED_JOBS` means its `if:` keeps
only the fork-PR clause.

As a result, the job runs on pushes to `main` again until apache#27337 removes
it. It is no longer required, so it can't block anything.

## What is the testing strategy for this PR?

The `Validate required_status_checks in .asf.yaml` CI check, which runs
`check_asf_yaml_status_checks.py`, `check_rust_workflow_skips.py` and
`test_rust_workflow_skips.py`. All three pass locally.

## Are there any user-facing changes?

No.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 5.5 <[email protected]>
@andygrove
andygrove enabled auto-merge November 12, 2026 20:23
@andygrove
andygrove added this pull request to the merge queue Nov 12, 2026
@alamb

alamb commented Nov 12, 2026

Copy link
Copy Markdown
Contributor

🤞 EPIC

Merged via the queue into apache:main with commit 0302193 Nov 12, 2026
45 checks passed
@andygrove
andygrove deleted the remove-datafusion-spark branch November 12, 2026 21:46
comphead added a commit to comphead/arrow-datafusion-comet that referenced this pull request Nov 14, 2026
Builds on apache#7249, which tracks DataFusion branch-56 (56.0.0-rc1), with
current main merged in and the DataFusion dependencies moved to
DataFusion's main branch.

- datafusion crates on apache/datafusion's main branch (57.0.0-dev),
  locked at 6c42917
- datafusion-spark on apache/datafusion-spark's main branch, locked at
  4cd969d, because apache/datafusion#27337 moved the crate out of
  DataFusion. That repository builds against DataFusion branch-56, so a
  [patch] section moves its DataFusion dependencies to DataFusion main
- arrow/parquet 60.1.0, object_store 0.14.2
- iceberg and iceberg-storage-opendal on apache/iceberg-rust@6c97391, the
  apache/iceberg-rust#3257 (Arrow 60) merge, instead of the
  andygrove/iceberg-rust fork. It contains the revision main uses
  (de0a6ac), and main's opendal-hdfs-native feature is kept
- native/native-executors stays as on main, and its CI job stays off
  as in apache#7249
- source changes for the Arrow 60, Parquet 60 and DataFusion API changes
  as in apache#7249

Co-authored-by: Andy Grove <[email protected]>
comphead added a commit to comphead/arrow-datafusion-comet that referenced this pull request Nov 14, 2026
Builds on apache#7249, which tracks DataFusion branch-56 (56.0.0-rc1), with
current main merged in and the DataFusion dependencies moved to
DataFusion's main branch.

- datafusion crates on apache/datafusion's main branch (57.0.0-dev),
  locked at 73e0b03
- datafusion-spark on apache/datafusion-spark's main branch, locked at
  21334bb, because apache/datafusion#27337 moved the crate out of
  DataFusion. That repository builds against DataFusion branch-56, so a
  [patch] section moves its DataFusion dependencies to DataFusion main
- arrow/parquet 60.1.0, object_store 0.14.2
- iceberg and iceberg-storage-opendal on apache/iceberg-rust@6c97391, the
  apache/iceberg-rust#3257 (Arrow 60) merge, instead of the
  andygrove/iceberg-rust fork. It contains the revision main uses
  (de0a6ac), and main's opendal-hdfs-native feature is kept
- native/native-executors stays as on main, and its CI job stays off
  as in apache#7249
- source changes for the Arrow 60, Parquet 60 and DataFusion API changes
  as in apache#7249

Co-authored-by: Andy Grove <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

api change Changes the API exposed to users of the crate common Related to common crate development-process Related to development process of DataFusion documentation Improvements or additions to documentation spark Changes to datafusion-spark crate sqllogictest SQL Logic Tests (.slt) v57.0.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants