Commit 808b4fb
Iceberg 1.11 support for Spark 411, part (2/3): add iceberg-1-11-x module (#14882)
Part (2/3) of #14853. Part (1/3) (#14881) is merged; this PR is now
based
directly on `main`. Part (3/3) (#14883) stacks on this one.
### Description
Apache Iceberg published `iceberg-spark-runtime-4.1_2.13` starting at
version 1.11.0
([apache/iceberg#14155](apache/iceberg#14155)
added Spark 4.1 support, released in
[1.11.0](https://github.com/apache/iceberg/releases/tag/apache-iceberg-1.11.0)).
`iceberg-1-10-x` is not an option on Spark 4.1 because Iceberg never
released a 4.1 runtime before 1.11.
Adds a new Maven submodule `iceberg/iceberg-1-11-x` and switches the
`release411` profile from `iceberg/iceberg-stub` to use it.
Module skeleton (mirrors `iceberg-1-10-x` with the `iceberg111x`
sub-package and a `spark411` shim source dir):
- `iceberg/iceberg-1-11-x/pom.xml` + scala2.13 mirror
- `iceberg111x/IcebergProviderImpl`, `ShimUtilsImpl`, `GpuParquetIOShim`
- `org.apache.iceberg.spark.source.GpuSparkCopyOnWriteScan` — Iceberg
1.11 copy-on-write scan: `SupportsRuntimeV2Filtering` with
`filter(Predicate[])`
- `spark411/.../GpuInternalRow` overrides the new `SpecializedGetters`
methods Spark 4.1 added (`getGeometry`, `getGeography`) alongside the
existing `getVariant`
Wiring:
- parent pom: add `spark41x.iceberg.artifact.suffix=4.1` and
`iceberg.111x.version=1.11.0`; swap `release411` from `iceberg-stub` to
`iceberg-1-11-x`
- `scala2.13` mirror regenerated via
`build/make-scala-version-build-files.sh`
- `IcebergProbeImpl`: lift the `< 4.1.0` Spark cap to `< 4.2.0`; add the
1.11.0 commit-id mapping and `"1.11" -> "iceberg111x"` shim sub-package
- `iceberg/README.md`: document the new row in the Iceberg/Spark support
matrix
Enable iceberg integration tests on Spark 4.1.x:
- `spark_session.py`: add `is_spark_41x()` and include 4.1.x in
`is_iceberg_supported_spark()`
- `iceberg/__init__.py`: update the skip reason to mention 4.1.x
- `iceberg_test.py::test_iceberg_read_timetravel`: Iceberg 1.11 removed
the `.option("snapshot-id", ...)` read API and directs users at Spark's
built-in `versionAsOf` (works on both 1.10 and 1.11)
Also folds in two non-blocking review nits from the merged part (1/3)
(#14881):
- **Dedup the V1 copy-on-write scan** — the identical 1.6.x/1.9.x/1.10.x
`GpuSparkCopyOnWriteScan` classes (post-#14866 they depend only on
public `Scan` + `SupportsRuntimeFiltering`) are replaced by a single
common `GpuSparkCopyOnWriteV1Scan` in `iceberg/common`, instantiated by
all three V1 `ShimUtilsImpl`s. Only the 1.11 V2 path keeps a
version-specific class.
- **`GpuSparkScanAccess.branch()`** reads the private `branch` field
directly instead of the removed-in-1.11 `SparkScan.branch()` method, so
it resolves across 1.6.x–1.11.x (was returning `null` on 1.11).
### Checklists
Documentation
- [x] Updated for new or modified user-facing features or behaviors
(`iceberg/README.md` adds the Iceberg 1.11.x / Spark 4.1.x row to the
support matrix.)
- [ ] No user-facing change
Testing
- [x] Added or modified tests to cover new code paths
(`spark_session.py` + `iceberg/__init__.py` re-enable the iceberg suite
on Spark 4.1.x; `test_iceberg_read_timetravel` switched to
`versionAsOf`.)
- [ ] 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: Chong Gao <res_life@163.com>
Co-authored-by: Chong Gao <res_life@163.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>1 parent e57b9b2 commit 808b4fb
22 files changed
Lines changed: 500 additions & 97 deletions
File tree
- iceberg
- common/src/main
- java/org/apache/iceberg/spark/source
- scala
- com/nvidia/spark/rapids/iceberg
- org/apache/iceberg/spark/source
- iceberg-1-10-x/src/main/java/com/nvidia/spark/rapids/iceberg/iceberg110x
- iceberg-1-11-x
- src/main
- java/com/nvidia/spark/rapids/iceberg/iceberg111x
- scala
- com/nvidia/spark/rapids/iceberg/iceberg111x
- org/apache/iceberg/spark/source
- spark411/java/com/nvidia/spark/rapids/iceberg
- iceberg-1-6-x/src/main/java/com/nvidia/spark/rapids/iceberg/iceberg16x
- iceberg-1-9-x/src/main
- java/com/nvidia/spark/rapids/iceberg/iceberg19x
- scala/org/apache/iceberg/spark/source
- integration_tests/src/main/python
- iceberg
- jenkins
- scala2.13
- iceberg/iceberg-1-11-x
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| 17 | + | |
17 | 18 | | |
18 | | - | |
| 19 | + | |
19 | 20 | | |
20 | 21 | | |
21 | 22 | | |
22 | 23 | | |
23 | | - | |
24 | | - | |
| 24 | + | |
| 25 | + | |
25 | 26 | | |
26 | 27 | | |
27 | 28 | | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
28 | 33 | | |
29 | 34 | | |
30 | 35 | | |
| |||
Lines changed: 20 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
71 | 71 | | |
72 | 72 | | |
73 | 73 | | |
74 | | - | |
75 | | - | |
76 | | - | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
77 | 94 | | |
78 | 95 | | |
79 | 96 | | |
| |||
Lines changed: 5 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
30 | | - | |
| 30 | + | |
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
| |||
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
45 | | - | |
| 45 | + | |
| 46 | + | |
46 | 47 | | |
47 | 48 | | |
48 | 49 | | |
| |||
76 | 77 | | |
77 | 78 | | |
78 | 79 | | |
79 | | - | |
| 80 | + | |
| 81 | + | |
80 | 82 | | |
81 | 83 | | |
82 | 84 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
26 | | - | |
27 | | - | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
28 | 38 | | |
29 | | - | |
| 39 | + | |
30 | 40 | | |
31 | 41 | | |
32 | 42 | | |
| |||
41 | 51 | | |
42 | 52 | | |
43 | 53 | | |
44 | | - | |
| 54 | + | |
45 | 55 | | |
46 | 56 | | |
47 | | - | |
48 | | - | |
| 57 | + | |
| 58 | + | |
49 | 59 | | |
50 | 60 | | |
51 | | - | |
| 61 | + | |
52 | 62 | | |
Lines changed: 2 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
31 | | - | |
| 31 | + | |
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
| |||
84 | 84 | | |
85 | 85 | | |
86 | 86 | | |
87 | | - | |
| 87 | + | |
88 | 88 | | |
89 | 89 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
Lines changed: 89 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
Lines changed: 55 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
0 commit comments