[auto-merge] release/26.08 to main [skip ci] [bot] - #15412
Conversation
…in for Apache Spark rename (#15114) Contributes to #15107 ### Description The https://github.com/nvidia/spark-rapids repository has been renamed to https://github.com/nvidia/cudf-spark. This PR rolls out name changes for content and links referenced in the documentation. Not changed here are documentation updates for configurations. Configurations will be added to support the new product name (removing rapids) with a deprecation period. Documentation for configurations can be updated when new configuration names are enabled. Note that this PR modifies some generated documentation, so pre-merge CI should be enabled. ### Checklists Documentation - [X] Updated for new or modified user-facing features or behaviors - [ ] No user-facing change Testing - [ ] Added or modified tests to cover new code paths - [ ] Covered by existing tests (Please provide the names of the existing tests in the PR description.) - [X] Not required Performance - [ ] Tests ran and results are added in the PR description - [ ] Issue filed with a link in the PR description - [X] Not required --------- Signed-off-by: Sameer Raheja <sraheja@.nvidia.com> Co-authored-by: Sameer Raheja <sraheja@.nvidia.com> Co-authored-by: Gary Shen <gashen@nvidia.com>
|
FAILURE - Unable to auto-merge. Manual operation is required. Please use the following steps to fix the merge conflicts manually: IMPORTANT: Before merging this PR, be sure to change the merging strategy to Once this PR is merged, the auto-merge PR should automatically be closed since it contains the same commit hashes |
Fixes #15234 ## Description Add native GPU support for Databricks Delta’s CheckOverflowInTableWrite expression on DBR 17.3. The expression now delegates to GpuCast while preserving Delta’s DELTA_CAST_OVERFLOW_IN_TABLE_WRITE error behavior. The change also: - Registers the expression rule with the DBR 17.3 Delta provider. - Adds success and overflow integration tests. - Disables the CPU-expression bridge in the focused tests to prove native GPU replacement. - Imports the DBR spark-protobuf_2.13 artifact required by the integration-test build. ## Verification Tested on DBR 17.3 GPU ML: - Built successfully with ./jenkins/databricks/build.sh. - Focused MERGE success and overflow tests passed. - Verified GpuRapidsProcessDeltaMergeJoinExec was used with the CPU bridge disabled. - Verified overflow retains DELTA_CAST_OVERFLOW_IN_TABLE_WRITE ## Performance Results On DBR 17.3.x GPU ML, a 10-million-row matched Delta MERGE was measured with 16 partitions, one warm-up, and three alternating runs per mode. Native CheckOverflowInTableWrite support reduced median wall time from 11.447s to 8.559s, a 1.337× speedup and 25.23% reduction in elapsed time. Median rewrite time decreased from 4.648s to 1.784s, while scan times remained comparable. ### Checklists Documentation - [ ] Updated for new or modified user-facing features or behaviors - [x] No user-facing change Testing - [x] Added or modified tests to cover new code paths - [ ] Covered by existing tests (Please provide the names of the existing tests in the PR description.) - [ ] Not required Performance - [ ] Tests ran and results are added in the PR description - [ ] Issue filed with a link in the PR description - [x] Not required --------- Signed-off-by: Rahul Prabhu <raprabhu@nvidia.com>
|
FAILURE - Unable to auto-merge. Manual operation is required. Please use the following steps to fix the merge conflicts manually: IMPORTANT: Before merging this PR, be sure to change the merging strategy to Once this PR is merged, the auto-merge PR should automatically be closed since it contains the same commit hashes |
…5415) Fixes #15405. ### Description `test_orc_gpu_write_cpu_read_timestamp_in_non_utc_timezone` expects ORC timestamp writes to fall back to CPU when the JVM and Spark session use a non-UTC timezone. On Spark versions whose write plan exposes `WriteFilesExec`, that node is also reported as a CPU fallback because its parent write command cannot run on GPU, but the test only allowed `DataWritingCommandExec`. This change allows `WriteFilesExec` only in the existing non-UTC allow list. UTC test behavior remains unchanged. Validation: - `build/buildall --profile=noSnapshots -P=4` built the Scala 2.12 uber jar with 20 shims. - `build/buildall --scala213 --profile=noSnapshots -P=4` built the Scala 2.13 uber jar with all 19 supported shims. - `orc_test.py::test_orc_gpu_write_cpu_read_timestamp_in_non_utc_timezone` passed with `TZ=Asia/Shanghai` on all 20 supported Scala 2.12 Spark installations and all 19 supported Scala 2.13 Spark installations from Spark 3.3.0 through 4.2.0. ### Checklists Documentation - [ ] Updated for new or modified user-facing features or behaviors - [x] No user-facing change Testing - [x] Added or modified tests to cover new code paths - [ ] Covered by existing tests (Please provide the names of the existing tests in the PR description.) - [ ] Not required Performance - [ ] Tests ran and results are added in the PR description - [ ] Issue filed with a link in the PR description - [x] Not required Signed-off-by: Chong Gao <chongg@nvidia.com> Co-authored-by: Chong Gao <res_life@163.com>
|
FAILURE - Unable to auto-merge. Manual operation is required. Please use the following steps to fix the merge conflicts manually: IMPORTANT: Before merging this PR, be sure to change the merging strategy to Once this PR is merged, the auto-merge PR should automatically be closed since it contains the same commit hashes |
#15413) Fixes #15379. ### Description - Propagate `BroadcastHashJoinExec.isSkewJoin` into `GpuBroadcastHashJoinExec` on Spark 4.2 so AQE skew-optimized broadcast joins keep the flag after GPU conversion, matching Spark's SPARK-44065 plan display. - Override `nodeName` in `GpuBroadcastHashJoinExecBase` to append `(skew=true)` when `isSkewJoin` is set, so GPU explain output mirrors CPU behavior. - Split the Spark 4.2 BHJ shim from the shared `spark340` path because `isSkewJoin` only exists on BHJ in Spark 4.2+, avoiding compile failures on older shims. - Add `BroadcastHashJoinSkewSuite` for Spark 4.2 to assert the GPU join preserves `isSkewJoin` and the plan-string marker. Validation: - `mvn -s ~/.m2/settings_art.xml -f scala2.13/pom.xml -Dbuildver=420 -Dcuda.version=cuda13 -DskipTests verify -pl sql-plugin,tests -am` - `mvn -s ~/.m2/settings_art.xml -Dbuildver=330 -Dcuda.version=cuda13 -DskipTests verify -pl sql-plugin -am` - `mvn -s ~/.m2/settings_art.xml -f scala2.13/pom.xml -Dbuildver=420 -Dcuda.version=cuda13 package -pl tests -am -DwildcardSuites=com.nvidia.spark.rapids.BroadcastHashJoinSkewSuite` ### Checklists Documentation - [ ] Updated for new or modified user-facing features or behaviors - [x] No user-facing change Testing - [x] Added or modified tests to cover new code paths - [ ] Covered by existing tests (Please provide the names of the existing tests in the PR description.) - [ ] Not required Performance - [ ] Tests ran and results are added in the PR description - [ ] Issue filed with a link in the PR description - [x] Not required Signed-off-by: Firestarman <firestarmanllc@gmail.com>
|
FAILURE - Unable to auto-merge. Manual operation is required. Please use the following steps to fix the merge conflicts manually: IMPORTANT: Before merging this PR, be sure to change the merging strategy to Once this PR is merged, the auto-merge PR should automatically be closed since it contains the same commit hashes |
Contributes to #15107 ### Description Address merge conflict in #15412 ### Checklists Documentation - [X] Updated for new or modified user-facing features or behaviors - [ ] No user-facing change Testing - [ ] Added or modified tests to cover new code paths - [ ] Covered by existing tests (Please provide the names of the existing tests in the PR description.) - [X] Not required Performance - [ ] Tests ran and results are added in the PR description - [ ] Issue filed with a link in the PR description - [X] Not required Signed-off-by: Sameer Raheja <sraheja@.nvidia.com> Co-authored-by: Sameer Raheja <sraheja@.nvidia.com>
Fixes #15323. ### Description This is a follow-up to #15360 that makes the Iceberg S3 path regression test reliable with a REST catalog. The test previously constructed the problematic path by overriding `write.data.path` with the configured warehouse. For a REST catalog, the warehouse value can be a logical identifier rather than a physical S3 location. The updated test follows `test_iceberg_parquet_read_from_url_encoded_path`: - Adds a string containing a raw space as special-case partition data. The value is valid in an S3 object key but invalid in a URI unless encoded. - Creates an Iceberg table partitioned by that column and lets Iceberg construct the data-file path through its normal partition writer. - Continues to run only with the REST catalog, where the optimized S3 reader is exercised. - Verifies the startup-only `spark.rapids.perfio.s3.enabled` setting through SparkConf instead of querying an executor-initialized PerfIO singleton from the driver. Testing performed: - The REST-catalog run completed 184 existing tests successfully; the three new parameterized variants reached table setup and exposed the driver-side PerfIO assertion corrected here. - `python3 -m py_compile integration_tests/src/main/python/iceberg/iceberg_test.py` - `git diff --check` A final REST-catalog pipeline rerun is pending. ### Checklists Documentation - [ ] Updated for new or modified user-facing features or behaviors - [x] No user-facing change Testing - [x] Added or modified tests to cover new code paths - [ ] Covered by existing tests - [ ] Not required Performance - [ ] Tests ran and results are added in the PR description - [ ] Issue filed with a link in the PR description - [x] Not required --------- Signed-off-by: Ray Liu <liurenjie2008@gmail.com>
|
FAILURE - Unable to auto-merge. Manual operation is required. Please use the following steps to fix the merge conflicts manually: IMPORTANT: Before merging this PR, be sure to change the merging strategy to Once this PR is merged, the auto-merge PR should automatically be closed since it contains the same commit hashes |
…ors for OSS delta [databricks] (#15368) Fixes #15326. ### Description The CDF read with deletion vectors currently fails. Two things were missing to support this case: - The `IF_NOT_CONTAINED` row index filter type support. The Delta CDC reader can use this type of row index filter. - Inline deletion vector support. The CDC reader creates inline deletion vectors. This PR adds those supports based on NVIDIA/cudf#23402 for OSS Delta. The plugin now can load inline deletion vectors and process the `IF_NOT_CONTAINED` filter properly with all 3 Delta readers. Note that the issue exists only with the native readers (`GpuDeltaParquetFileFormatBase2`). The legacy reader (`GpuDeltaParquetFileFormatBase`) does not have this issue. Databricks readers have the same issue, and will be fixed in #15365. ### Checklists Documentation - [ ] Updated for new or modified user-facing features or behaviors - [x] No user-facing change Testing - [x] Added or modified tests to cover new code paths - [ ] Covered by existing tests (Please provide the names of the existing tests in the PR description.) - [ ] Not required Performance - [ ] Tests ran and results are added in the PR description - [ ] Issue filed with a link in the PR description - [x] Not required --------- Signed-off-by: Jihoon Son <ghoonson@gmail.com>
|
FAILURE - Unable to auto-merge. Manual operation is required. Please use the following steps to fix the merge conflicts manually: IMPORTANT: Before merging this PR, be sure to change the merging strategy to Once this PR is merged, the auto-merge PR should automatically be closed since it contains the same commit hashes |
Fixes #15394 ### Description On OSS Spark 4.0 with Delta Lake 4.0, `CREATE OR REPLACE TABLE ... USING DELTA AS SELECT ...` succeeds on CPU but fails on GPU with: ```text [UNSUPPORTED_FEATURE.TABLE_OPERATION] Table ... does not support truncate in batch mode ``` Spark 4 plans RTAS as an unconditional `OverwriteByExpression`. Its table capability check therefore requires the staged table to support `TRUNCATE`. The RAPIDS staged Delta table advertised only `V1_BATCH_WRITE`, and its write builder did not implement `SupportsTruncate`. In addition, the Delta provider's `OverwriteByExpressionExecV1` handling recognized regular `DeltaTableV2` tables but not the RAPIDS staged Delta table used by atomic RTAS. In this PR: - Added `TRUNCATE` to the capabilities advertised by `GpuStagedDeltaTableV2`. - Implemented `SupportsTruncate` in the staged Delta V1 write builder. - Tags and converts `OverwriteByExpressionExecV1` for RAPIDS staged Delta tables to `GpuOverwriteByExpressionExecV1`. - Applied the staged-table handling to the Delta 3.3, 4.0, and 4.1 provider implementations. - Preserved the existing behavior for regular `DeltaTableV2` tables and continues to reject unrelated table implementations. - Limits the existing Delta issue #4671 RTAS xfails to the affected Spark 3.5 releases instead of also applying them to Spark 4. - Added an integration regression test. ### Testing #### OSS Spark 4.0 / Delta Lake 4.0 Focused integration test: ```text TEST=test_delta_rtas_truncate_capability ``` Result: `1 passed, 39635 deselected`. Broader focused RTAS selection: ```text TEST="test_delta_rtas_truncate_capability or test_delta_rtas_sql" ``` Result: `3 passed, 1 skipped, 39632 deselected`. ### Checklists Documentation - [ ] Updated for new or modified user-facing features or behaviors - [x] No user-facing change Testing - [x] Added or modified tests to cover new code paths - [ ] Covered by existing tests (Please provide the names of the existing tests in the PR description.) - [ ] Not required Performance - [ ] Tests ran and results are added in the PR description - [ ] Issue filed with a link in the PR description - [x] Not required --------- Signed-off-by: Niranjan Artal <nartal@nvidia.com>
|
FAILURE - Unable to auto-merge. Manual operation is required. Please use the following steps to fix the merge conflicts manually: IMPORTANT: Before merging this PR, be sure to change the merging strategy to Once this PR is merged, the auto-merge PR should automatically be closed since it contains the same commit hashes |
…5416) Fixes #15382. ### Description - Match Spark 4.2 (`SPARK-56663`) `date_trunc` semantics at `Long.MinValue` micros: truncation underflow must raise `ArithmeticException` instead of returning a wrapped positive timestamp on GPU. - Route the check through `TruncTimestampShims` so Spark 4.2 enables the overflow check while older supported Spark lines keep the previous no-op behavior, without runtime version compares in common code. - Add `test_date_trunc_long_min_value_overflow` for `YEAR` and `MILLISECOND` on Spark 4.2+, comparing CPU/GPU exception behavior and validating the GPU plan includes `GpuProjectExec`. - Validated with: - `mvn -s /home/liangcail/.m2/settings_art.xml -f scala2.13/pom.xml -pl sql-plugin -Dbuildver=420 -Dcuda.version=cuda13 -DskipTests clean compile` - `mvn -s /home/liangcail/.m2/settings_art.xml -f scala2.13/pom.xml -pl sql-plugin -Dbuildver=413 -Dcuda.version=cuda13 -DskipTests clean compile` - `mvn -s /home/liangcail/.m2/settings_art.xml -f scala2.13/pom.xml -Dbuildver=420 -Dcuda.version=cuda13 -DskipTests validate` - `mvn -s /home/liangcail/.m2/settings_art.xml -f scala2.13/pom.xml -Dbuildver=413 -Dcuda.version=cuda13 -DskipTests validate` ### Checklists Documentation - [ ] Updated for new or modified user-facing features or behaviors - [x] No user-facing change Testing - [x] Added or modified tests to cover new code paths - [ ] Covered by existing tests (Please provide the names of the existing tests in the PR description.) - [ ] Not required Performance - [ ] Tests ran and results are added in the PR description - [ ] Issue filed with a link in the PR description - [x] Not required --------- Signed-off-by: Firestarman <firestarmanllc@gmail.com>
|
FAILURE - Unable to auto-merge. Manual operation is required. Please use the following steps to fix the merge conflicts manually: IMPORTANT: Before merging this PR, be sure to change the merging strategy to Once this PR is merged, the auto-merge PR should automatically be closed since it contains the same commit hashes |
Resolves the latest merge conflicts in #15412 after #15423 merged. ### Description Merge the current `release/26.08` head into the current `main` head. The initial conflicts were the root and Scala 2.13 project versions. Both were resolved by retaining main's `26.10.0-SNAPSHOT` version instead of the release branch's `26.08.0-SNAPSHOT` version. The branch was refreshed again after additional PRs landed on `release/26.08`. The current diff includes all release updates added after #15423, including: - #15413 — preserve Spark 4.2 BroadcastHashJoin `isSkewJoin` - #15422 — fix Iceberg REST S3 path regression coverage - #15368 — OSS Delta deletion-vector updates - #15411 — fix OSS Delta RTAS on Spark 4.x+ - #15416 — match Spark 4.2 `date_trunc` overflow behavior ### Checklists Documentation - [ ] Updated for new or modified user-facing features or behaviors - [x] No user-facing change Testing - [ ] Added or modified tests to cover new code paths - [x] Covered by existing tests (The included release commits retain their original tests.) - [ ] Not required Performance - [ ] Tests ran and results are added in the PR description - [ ] Issue filed with a link in the PR description - [x] Not required ### Validation - `git diff --check` - Parsed both initially resolved POM files as XML - `python3 -m py_compile` for the modified Iceberg, Delta, and date-time integration tests IMPORTANT: Merge this PR using **Create a merge commit** so the release commit ancestry is preserved and #15412 can close automatically. --------- Signed-off-by: Sameer Raheja <sraheja@.nvidia.com> Signed-off-by: Rahul Prabhu <raprabhu@nvidia.com> Signed-off-by: Chong Gao <chongg@nvidia.com> Signed-off-by: Firestarman <firestarmanllc@gmail.com> Signed-off-by: Ray Liu <liurenjie2008@gmail.com> Signed-off-by: liyuan <yuali@nvidia.com> Signed-off-by: Jihoon Son <ghoonson@gmail.com> Signed-off-by: Niranjan Artal <nartal@nvidia.com> Co-authored-by: Sameer Raheja <sameerz@users.noreply.github.com> Co-authored-by: Sameer Raheja <sraheja@.nvidia.com> Co-authored-by: Gary Shen <gashen@nvidia.com> Co-authored-by: Rahul Prabhu <100436830+sdrp713@users.noreply.github.com> Co-authored-by: Chong Gao <chongg@nvidia.com> Co-authored-by: Chong Gao <res_life@163.com> Co-authored-by: Liangcai Li <firestarmanllc@gmail.com> Co-authored-by: Renjie Liu <liurenjie2008@gmail.com> Co-authored-by: Jihoon Son <ghoonson@gmail.com> Co-authored-by: Niranjan Artal <50492963+nartal1@users.noreply.github.com>
Fixes #15418. ### Description #15285 changed behavior, now auto set shuffle manager. It impacts the behavior of Dataporc pipeline. Dataproc's Spark 4.0.1 runtime uses a shuffle resolver ABI that differs from the Apache Spark ABI expected by the RAPIDS Shuffle Manager. After shuffle manager auto-configuration was enabled for Spark 4, workloads that did not explicitly configure `spark.shuffle.manager` began selecting the RAPIDS implementation and failed during shuffle output commit with `NoSuchMethodError`. Skip RAPIDS Shuffle Manager auto-configuration when `spark.dataproc.engine` is present. This restores the previous behavior on Dataproc by leaving `spark.shuffle.manager` unset, while continuing to preserve any explicitly configured shuffle manager. The configuration documentation is updated to describe this exception. Added `RapidsPluginUtilsSuite` coverage for the Dataproc guard. Validation: - Spark 4.0.1 / Scala 2.13: `RapidsPluginUtilsSuite` passed (6 tests). - Scalastyle passed across 1,701 files with no errors or warnings. ### Checklists Documentation - [x] Updated for new or modified user-facing features or behaviors - [ ] No user-facing change Testing - [x] Added or modified tests to cover new code paths - [ ] Covered by existing tests (Please provide the names of the existing tests in the PR description.) - [ ] Not required Performance - [ ] Tests ran and results are added in the PR description - [ ] Issue filed with a link in the PR description - [x] Not required --------- Signed-off-by: Chong Gao <chongg@nvidia.com> Co-authored-by: Chong Gao <res_life@163.com>
|
FAILURE - Unable to auto-merge. Manual operation is required. Please use the following steps to fix the merge conflicts manually: IMPORTANT: Before merging this PR, be sure to change the merging strategy to Once this PR is merged, the auto-merge PR should automatically be closed since it contains the same commit hashes |
### Description #15434 was squash-merged, so its code reached `main` but the `release/26.08` commit ancestry was lost. As a result, auto-merge PR #15412 remained open and conflicting. This PR records the missing ancestry by merging the current `release/26.08` head into the current `main` head while keeping the main tree unchanged. ### Verification - The merge commit has two parents: - current main: `e1e1ba3cfd7d24d0867759d5731bf2c65210c1c5` - release/26.08: `e5bcfffd061bc9b58fdf138010b5b6ca61d934e3` - `git diff origin/main...HEAD` is empty. - Both POM version conflicts retained main's `26.10.0-SNAPSHOT` value. - `git diff --check` passes. ### Checklists Documentation - [ ] Updated for new or modified user-facing features or behaviors - [x] No user-facing change Testing - [ ] Added or modified tests to cover new code paths - [x] Covered by existing tests (No tree changes; ancestry only.) - [ ] Not required Performance - [ ] Tests ran and results are added in the PR description - [ ] Issue filed with a link in the PR description - [x] Not required IMPORTANT: This PR must be merged using **Create a merge commit**. Squash or rebase would discard the release parent again and leave #15412 unresolved.
) Fixes #15454. ### Description - Convert CollectSet float/double aggregation buffers between GPU logical values and Spark 4.2 CPU normalized bit-pattern keys during mixed hashAgg stages, so NaN and signed-zero uniqueness matches pure CPU. - Add `collectSetCpuBufferElementType` shim (bit-keyed on Spark 4.2, identity earlier) and CollectSet-specific GPU↔CPU buffer converters used by `GpuOverrides`. - Validate with Spark 4.2.0 / Scala 2.13 and `DATAGEN_SEED=1785353212`: `352 passed` including the previously failing `test_hash_groupby_collect_partial_replace_fallback` / `test_hash_groupby_collect_partial_replace_with_distinct_fallback` Float cases; also `mvn -f scala2.13/pom.xml -Dbuildver=420 -Dcuda.version=cuda13 -DskipTests -pl sql-plugin verify`. ### Checklists Documentation - [ ] Updated for new or modified user-facing features or behaviors - [x] No user-facing change Testing - [ ] Added or modified tests to cover new code paths - [x] Covered by existing tests (Please provide the names of the existing tests in the PR description.) - [ ] Not required Performance - [ ] Tests ran and results are added in the PR description - [ ] Issue filed with a link in the PR description - [x] Not required --------- Signed-off-by: Firestarman <firestarmanllc@gmail.com>
|
SUCCESS - auto-merge |
auto-merge triggered by github actions on
release/26.08to create a PR keepingmainup-to-date. If this PR is unable to be merged due to conflicts, it will remain open until manually fix.