[GLUTEN-12807][CORE] Deprecate and remove Spark 3.3 support - #12902
[GLUTEN-12807][CORE] Deprecate and remove Spark 3.3 support#12902LuciferYang wants to merge 7 commits into
Conversation
Also removes spark-3.3 from the format script's profile list first, since every later step runs it and the enforcer's requireActiveProfile would reject an unknown profile once the poms no longer define it.
Removes shims/spark33, gluten-ut/spark33, and the delta 2.3 / iceberg 1.5 source directories that only the spark-3.3 profile selected. Also drops gluten-iceberg/src-iceberg3, which was already dead: iceberg.binary.version was never set to 3 and the file was a byte-identical copy of the src-iceberg5 one. LICENSE loses the 12 entries that pointed into the removed directories.
Drops the two spark-test-spark33 jobs and the shims33 change-detection flag they were the only consumers of, removes 3.3 from the two TPC matrices, and moves the four Spark-3.3-only jobs (OOM, random-kill, uniffle, celeborn) to 3.5 so those scenarios keep their only coverage. Their step names said spark3.3 too.
…ing chain The ClickHouse release chain hardcoded 3.3: package.sh built only that version and gluten.sh only recognised jars/spark33, so it would have broken outright. Moves both to 3.5 and settles the 'TODO: support spark 3.5 later' next to it.
Merges the two version-split sections in velox-backend-limitations.md, keeping the 3.4+ behaviour that is now the floor.
Six places updated a version marker without the thing it governed: the m2-cache Dockerfile's dangling continuation swallowed WORKDIR into the RUN, package-release.sh still demanded a 3.3 bundle jar that can no longer be built, build-release.sh kept a Java-8 gate with no Java-8 build left, ClickHouse.md paired Spark 3.5.5 with Delta 2.2.0, clickhouse-backend-debug.md kept spark.test.home at spark33, and the nightly bundle jobs built 3.5 twice.
|
Run Gluten Clickhouse CI on x86 |
|
|
||
| # Spark 4.0 | ||
| $MVN_CMD -Pjava-17,scala-2.13,spark-4,backends-velox,hadoop-3.3,spark-ut \ | ||
| $MVN_CMD -Pjava-17,scala-2.13,spark-4.0,backends-velox,hadoop-3.3,spark-ut \ |
There was a problem hiding this comment.
Drive-by fix, unrelated to Spark 3.3, flagged here because it sits in the same RUN as the continuation fix below.
spark-4 is not a profile id. The root pom defines spark-4.0 and spark-4.1, so Maven printed The requested profile "spark-4" could not be activated because it does not exist. and carried on with the root defaults. enforce-spark-profile does not catch it either: dependency:go-offline invokes the plugin goal directly rather than running a lifecycle, and that execution binds to validate, so it never fires. I confirmed the command exits 0 with only the warning.
Falling back to the defaults gives a mix that is mostly 3.5: sparkshim.artifactId resolves to spark-sql-columnar-shims-spark35, sparkbundle.version to 3.5, delta.version to 3.3.2. Only spark.version happens to match, since the root default is already 4.0.2, so the Spark 4.0 jars did land in the cache while the Delta 4.0.1 and spark40 shim coordinates did not. That is the whole cost: no red build, just a cache image that does not hold what this stanza was meant to pre-populate for the 4.0 jobs.
Introduced in #11655. Happy to pull it into its own PR if you would rather keep this one to the removal.
There was a problem hiding this comment.
Split out to #12903 and reverted here, so this PR's only change to this file is the removal of the Spark 3.3 stanza plus the trailing ; \ that removal left dangling.
It is pre-existing (apache#11655) and adds behavior rather than removing it, so it does not belong in a removal PR. Split into its own MINOR PR.
|
Run Gluten Clickhouse CI on x86 |
What changes are proposed in this pull request?
Removes the Spark 3.3 build surface. This covers three items in #12807: the Spark-33 unit tests, the Spark-33 shim source tree, and the building scripts. Two follow-ups remain, described at the end.
Seven directories go, 328 files and about 41k lines:
shims/spark33,gluten-ut/spark33,backends-clickhouse/src-delta23,gluten-delta/src-delta23,backends-clickhouse/src-iceberg-spark33,gluten-iceberg/src-iceberg5,gluten-iceberg/src-iceberg3. Thespark-3.3profile is gone from the six poms that declared one, and the root pom'srequireActiveProfilelist now names only the four surviving versions, so-Pspark-3.3fails withMissing spark version profileinstead of quietly resolving to whatever the defaults are.gluten-iceberg/src-iceberg3needs a word since its name does not mention 3.3: no profile ever seticeberg.binary.version=3, so no build could reach it, and at the base commit its two files were byte-identical tosrc-iceberg5's. It was already dead, andsrc-iceberg5was reachable only from the 3.3 profile, so both go together.LICENSEcarried twelve entries pointing intoshims/spark33/andsrc-delta23/. Those are removed, and the remaining 24 paths were checked to still resolve.Four CI jobs ran only on Spark 3.3 and are the sole coverage for what they exercise, so they are retargeted to 3.5 rather than deleted:
tpc-test-ubuntu-oom,tpc-test-ubuntu-randomkill,tpc-test-centos8-uniffle,tpc-test-ubuntu-2204-celeborn. For celeborn the gluten-it install command moved with it, and it now takes the profile frommatrix.sparklike the Gluten build two steps above it.spark-test-spark33andspark-test-spark33-sloware deleted outright: 3.4 and 3.5 run the same profile set (-Piceberg -Pdelta -Phudi -Ppaimon), so no combination is orphaned. Theshims33change-detection flag and its path filter go with them.The ClickHouse release chain hardcoded 3.3 end to end:
ep/build-clickhouse/src/package.shbuilt only that version andbin/gluten.shonly recognisedjars/spark33, so leaving it would have shipped a tarball whose launcher cannot find its own jars. Both move to 3.5, which also settles the# TODO: support spark 3.5 latersitting next to it. I have no ClickHouse environment, so that part rests on reading andbash -n. The ClickHouse CI triggers itself here (this PR touchespom.xml,backends-clickhouse/**,shims/**and more, which the trigger workflow's path filters match), but a CH maintainer's eyes on the packaging change would still help.Three things reviewers should know.
install-spark-resources.shno longer installs the 3.3 distribution, sodocker_image.ymlwill rebuild the images and/opt/shims/spark33/spark_homedisappears from them. Nothing in the repo references that path, but a branch that still does will break once the new image is published.dev/release/build-release.shhad a "Java 8 is required" gate whose only purpose was the Spark 3.3 build directly below it. With that build gone nothing in the script needs Java 8 (the four remaining builds all pass-Pjava-17, and the script installs Corretto 17 a few lines later), while the gate still rejects a release manager on JDK 17, and it does so after the longest step in the script. The design note for this work listed it as out of scope; I removed it here instead, since this change is what made it vestigial.dev/release/package-release.shneeded the same treatment for a different reason: itsSPARK_VERSIONSlist still demanded a 3.3 bundle jar that can no longer be built, and it hard-fails on a missing jar before it packages anything, so a release cut would have produced zero artifacts.Five test cases are pinned to 3.3 with
testWithMaxSparkVersion/testWithSpecifiedSparkVersion, and those helpers skip thetest()call entirely when no version matches, so from this PR until PR 3 they run nowhere and leave no skip marker:VeloxParquetWriteForHiveSuite'shive.exec.compress.outputcase,ClickhouseGlutenKafkaScanSuite's only case, and three inGlutenClickHouseNativeWriteTableSuite. Two carry TODOs saying they fail on 3.5, so each needs a decision (port or delete plus an issue) rather than a substitution, which is why they belong to PR 3.Deliberately left alone: the nineteen
ignoreClassentries inpackage/pom.xmlunder "The overridden class list by Gluten" are now inert, because all five classes they name were overridden only inshims/spark33, butbanDuplicateClassesruns withfail=trueand dropping the entries could surface a duplicate from a dependency jar, so that is its own call.tools/gluten-it/pom.xmlis a standalone pom withoutrequireActiveProfile, so-Pspark-3.3there now warns and builds 3.5 rather than failing; adding the same gate would also outlaw the profile-less build that works today. Andtools/workload/benchmark_velox/initialize.ipynbstill provisions Spark 3.3.1 across five coupled lines including a symlink; I cannot test that notebook, so I left it rather than half-update it.Follow-ups under #12807: PR 2 lifts the shim methods that existed only for 3.3, PR 3 removes the residual version checks (
eqSpark33,AlignExpandOutputTypes, theNativeWritePostRuleregistration, thespark33helper in the CH tests) and handles the five pinned cases above.How was this patch tested?
Local verification, all against this branch:
mvn validate -Pspark-3.3Missing spark version profile, as intendedtest-compilefor 3.4, 3.5, 4.0, 4.1-Pceleborn,uniffle -Piceberg,delta,hudi,paimon)-Pbackends-clickhousebuildsrc-deltadoes not reference anything that lived only insrc-delta23dev/format-scala-code.sh --checkMissing spark version profiledocker buildx build --checkonDockerfile.ubuntu22-m2-cacheNoEmptyContinuationwarning, byte-for-byte the same warning the pre-change file producesbash -non every changed scriptTwo caveats on the local runs. The 3.5 builds needed
-Pscala-2.13to get around corruptedspark-*_2.12/3.5.5jars in my local~/.m2, and that combination has to skip-Ppaimonbecause upstream never publishedpaimon-spark-3.5_2.13; the 2.12 path is what CI exercises.dev/check.pycould not run locally (it needs theregexmodule), but this PR adds no new files, so its license-header check has no subject.Unit tests are what CI settles, not a local run. The ClickHouse packaging changes are the part I am least able to verify myself.
Was this patch authored or co-authored using generative AI tooling?
Generated-by: Claude claude-opus-5