Accelerate DeltaDynamicPartitionOverwriteCommand - #13573
Merged
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull Request Overview
This PR adds GPU acceleration support for Delta Lake's dynamic partition overwrite functionality by implementing the missing GpuDeltaDynamicPartitionOverwriteCommand class and related infrastructure. Previously, queries with dynamic partition overwrite mode on clustered tables would fall back to CPU execution.
- Adds
GpuDeltaDynamicPartitionOverwriteCommandclass to provide GPU-accelerated execution - Implements
DeltaDynamicPartitionOverwriteCommandMetafor GPU compatibility checks and conversion - Registers the new command in the Delta provider for automatic GPU acceleration
Reviewed Changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| GpuDeltaDynamicPartitionOverwriteCommand.scala | New GPU implementation of dynamic partition overwrite command |
| DeltaDynamicPartitionOverwriteCommandMeta.scala | Metadata class for GPU conversion and compatibility validation |
| Delta33xProvider.scala | Registers the new command for GPU acceleration |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
Signed-off-by: Jihoon Son <ghoonson@gmail.com>
Collaborator
Author
|
build |
3 tasks
jihoonson
added a commit
that referenced
this pull request
Oct 28, 2025
…for delta writes (#13643) Fixes #13641. ### Description The tests in question are failing because the dynamic partition overwrite is supported only for Delta 3.3 (#13573). To allow the fallback of Delta writes in older versions, I added a new `allow_non_gpu_delta_write_if` marker. This new marker is different from `allow_non_gpu` and can be used only for Delta writes. Note that the Delta writes do not appear in the query plan and `allow_non_gpu` is not usable in that case. The fix passed all delta tests with Spark 3.3.0 and Delta 2.3.0. ### Checklists - [ ] This PR has added documentation for new or modified features or behaviors. - [ ] This PR has added new tests or modified existing tests to cover new code paths. (Please explain in the PR description how the new code paths are tested, such as names of the new/existing tests that cover them.) - [ ] Performance testing has been performed and its results are added in the PR description. Or, an issue has been filed with a link in the PR description. --------- Signed-off-by: Jihoon Son <ghoonson@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #13110.
Description
The insert overwrite queries with the
dynamicpartitionOverwriteMode to clustered tables currently fall back to CPU because of the lack of the GPU version ofDeltaDynamicPartitionOverwriteCommand. This PR adds the missing classes to support it.One thing to note is that we already have test cases for this query, which are
test_delta_insert_overwrite_dynamic_sql_liquid_clusteringandtest_delta_insert_overwrite_df_liquid_clusteringindelta_lake_liquid_clustering_test.py. These tests run some insert overwrite query and then verify whether it runs on GPU. These tests have been passing the CI because of #13059 even though the write falls back. These tests should cover the change in this PR.Here is performance test result.
I used the query below against the TPC-H lineitem table at sf=100.
I ran the query above on CPU and GPU, and compared their results. The means in the below snippet are the CPU runtime and the GPU runtime, respectively.
Configs used:
Checklists
(Please explain in the PR description how the new code paths are tested, such as names of the new/existing tests that cover them.)