This is an automated email from the ASF dual-hosted git repository.
voonhous pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hudi.git
The following commit(s) were added to refs/heads/master by this push:
new e5452c6ff38d feat(spark): upgrade Spark 4.2 dependency to GA 4.2.0
(#19365)
e5452c6ff38d is described below
commit e5452c6ff38d71da6cf43a9f664e61e6e4aadc9b
Author: Y Ethan Guo <[email protected]>
AuthorDate: Fri Jul 24 01:57:35 2026 -0700
feat(spark): upgrade Spark 4.2 dependency to GA 4.2.0 (#19365)
* chore(spark): upgrade Spark 4.2 dependency to GA 4.2.0
Bump the spark4.2 profile from 4.2.0-preview4 to the official 4.2.0 GA
release. Align the transitive versions that changed in GA: hadoop
3.4.3 -> 3.5.0 and lz4-java 1.10.4 -> 1.11.0. Rename the CI bundle
validation base image tag flink1200hive313spark420previewscala213 ->
flink1200hive313spark420scala213, rebuild it with SPARK_VERSION=4.2.0
and HADOOP_VERSION=3.5.0, and update the Spark 4.2 runtime string to
spark4.2.0 across the CI scripts, bot.yml, and .asf.yaml required checks.
closes #19364
* Adapt hudi-spark4 modules to Spark 4.2.0 GA Catalyst API changes
Spark 4.2.0 GA made three source-breaking Catalyst changes relative to
4.2.0-preview4:
- TableOutputResolver.resolveOutputColumns replaced the boolean
supportColDefaultValue flag with a defaultValueFillMode enum. Moved the
call into a per-version resolveOutputColumns seam on the shared
hudi-spark4-common base: 4.0/4.1 pass supportColDefaultValue = true, 4.2
passes defaultValueFillMode = FILL (the exact equivalent of the old true).
- Removed the geospatial GeographyVal/GeometryVal types and
SpecializedGetters.getGeography/getGeometry. Dropped the corresponding
overrides from the Spark 4.2 InternalRow and partition-values wrappers.
- Added SpecializedGetters.getBinaryView(int): BinaryView. Implemented it on
the Spark 4.2 wrappers; the partition-mapping subclasses inherit it.
* Move .asf.yaml required-check updates to a separate PR
The .asf.yaml required_status_checks rename (spark4.2.0-preview4 ->
spark4.2.0) must land before this PR so the renamed Spark 4.2 jobs can
satisfy the required checks. It is handled in its own PR; revert the
.asf.yaml change here to keep this PR free of it.
* chore(spark): address review comments on Spark 4.2 GA upgrade
- validate.sh: collapse the three per-version Spark 4 checks to a
`[[ "$SPARK_VERSION" == 4.* ]]` glob so future Spark 4 bumps don't
touch this file.
- release_candidate_validation.yml: add the spark4.2 / spark4.2.0 entry
to validate-release-candidate-bundles-spark4 so the
hudi-spark4.2-bundle_2.13 gets bundle-validated at RC time.
---
.github/workflows/bot.yml | 4 ++--
.github/workflows/release_candidate_validation.yml | 4 ++++
.../sql/hudi/analysis/HoodieSpark4Analysis.scala | 22 ++++++++++++++++------
.../sql/hudi/analysis/HoodieSpark40Analysis.scala | 9 +++++++++
.../sql/hudi/analysis/HoodieSpark41Analysis.scala | 9 +++++++++
.../apache/hudi/Spark42HoodiePartitionValues.scala | 10 +++-------
.../client/model/Spark42HoodieInternalRow.scala | 13 ++++---------
.../sql/hudi/analysis/HoodieSpark42Analysis.scala | 10 ++++++++++
...h => build_flink1200hive313spark420scala213.sh} | 8 ++++----
packaging/bundle-validation/ci_run.sh | 8 ++++----
packaging/bundle-validation/run_docker_java17.sh | 8 ++++----
packaging/bundle-validation/validate.sh | 6 +++---
pom.xml | 6 +++---
13 files changed, 75 insertions(+), 42 deletions(-)
diff --git a/.github/workflows/bot.yml b/.github/workflows/bot.yml
index ba93eb03db30..3f9f7eac868c 100644
--- a/.github/workflows/bot.yml
+++ b/.github/workflows/bot.yml
@@ -1176,7 +1176,7 @@ jobs:
- scalaProfile: 'scala-2.13'
flinkProfile: 'flink1.20'
sparkProfile: 'spark4.2'
- sparkRuntime: 'spark4.2.0-preview4'
+ sparkRuntime: 'spark4.2.0'
steps:
- if: needs.changes.outputs.relevant == 'true'
@@ -1304,7 +1304,7 @@ jobs:
flinkAvroVersion: '1.11.4'
flinkParquetVersion: '1.13.1'
sparkProfile: 'spark4.2'
- sparkRuntime: 'spark4.2.0-preview4'
+ sparkRuntime: 'spark4.2.0'
steps:
- if: needs.changes.outputs.relevant == 'true'
uses: actions/checkout@v5
diff --git a/.github/workflows/release_candidate_validation.yml
b/.github/workflows/release_candidate_validation.yml
index 6d13467ce87f..cb8a976f6b47 100644
--- a/.github/workflows/release_candidate_validation.yml
+++ b/.github/workflows/release_candidate_validation.yml
@@ -82,6 +82,10 @@ jobs:
flinkProfile: 'flink1.20'
sparkProfile: 'spark4.1'
sparkRuntime: 'spark4.1.1'
+ - scalaProfile: 'scala-2.13'
+ flinkProfile: 'flink1.20'
+ sparkProfile: 'spark4.2'
+ sparkRuntime: 'spark4.2.0'
steps:
- uses: actions/checkout@v5
- name: Set up JDK 17
diff --git
a/hudi-spark-datasource/hudi-spark4-common/src/main/scala/org/apache/spark/sql/hudi/analysis/HoodieSpark4Analysis.scala
b/hudi-spark-datasource/hudi-spark4-common/src/main/scala/org/apache/spark/sql/hudi/analysis/HoodieSpark4Analysis.scala
index 8d4266011183..85f03752da95 100644
---
a/hudi-spark-datasource/hudi-spark4-common/src/main/scala/org/apache/spark/sql/hudi/analysis/HoodieSpark4Analysis.scala
+++
b/hudi-spark-datasource/hudi-spark4-common/src/main/scala/org/apache/spark/sql/hudi/analysis/HoodieSpark4Analysis.scala
@@ -18,9 +18,10 @@
package org.apache.spark.sql.hudi.analysis
import org.apache.spark.sql.AnalysisException
-import org.apache.spark.sql.catalyst.analysis.{ResolveInsertionBase,
TableOutputResolver}
+import org.apache.spark.sql.catalyst.analysis.ResolveInsertionBase
import org.apache.spark.sql.catalyst.catalog.CatalogTable
-import org.apache.spark.sql.catalyst.plans.logical.InsertIntoStatement
+import org.apache.spark.sql.catalyst.expressions.Attribute
+import org.apache.spark.sql.catalyst.plans.logical.{InsertIntoStatement,
LogicalPlan}
import org.apache.spark.sql.errors.DataTypeErrors.toSQLId
import org.apache.spark.sql.errors.QueryCompilationErrors
import org.apache.spark.sql.execution.datasources.PreprocessTableInsertion
@@ -55,6 +56,17 @@ import
org.apache.spark.sql.util.PartitioningUtils.normalizePartitionSpec
*/
abstract class HoodieSpark4ResolveColumnsForInsertInto extends
ResolveInsertionBase {
+ /**
+ * Resolves the query output against the table schema, filling any
user-omitted column with its
+ * default value. Spark 4.2 GA replaced the boolean `supportColDefaultValue`
flag of
+ * `TableOutputResolver.resolveOutputColumns` with a `defaultValueFillMode`
enum, so the call
+ * itself lives in the per-version subclasses.
+ */
+ protected def resolveOutputColumns(tblName: String,
+ expectedColumns: Seq[Attribute],
+ query: LogicalPlan,
+ byName: Boolean): LogicalPlan
+
protected def preprocess(insert: InsertIntoStatement,
catalogTable: Option[CatalogTable]):
InsertIntoStatement = {
preprocess(insert, catalogTable,
catalogTable.map(_.partitionSchema).getOrElse(new StructType()))
@@ -100,13 +112,11 @@ abstract class HoodieSpark4ResolveColumnsForInsertInto
extends ResolveInsertionB
insert.query
}
val newQuery = try {
- TableOutputResolver.resolveOutputColumns(
+ resolveOutputColumns(
tblName,
expectedColumns,
query,
- byName = hasColumnList || insert.byName,
- conf,
- supportColDefaultValue = true)
+ byName = hasColumnList || insert.byName)
} catch {
case e: AnalysisException if staticPartCols.nonEmpty &&
(e.getErrorClass ==
"INSERT_COLUMN_ARITY_MISMATCH.NOT_ENOUGH_DATA_COLUMNS" ||
diff --git
a/hudi-spark-datasource/hudi-spark4.0.x/src/main/scala/org/apache/spark/sql/hudi/analysis/HoodieSpark40Analysis.scala
b/hudi-spark-datasource/hudi-spark4.0.x/src/main/scala/org/apache/spark/sql/hudi/analysis/HoodieSpark40Analysis.scala
index 200fe39af471..4949738c44b7 100644
---
a/hudi-spark-datasource/hudi-spark4.0.x/src/main/scala/org/apache/spark/sql/hudi/analysis/HoodieSpark40Analysis.scala
+++
b/hudi-spark-datasource/hudi-spark4.0.x/src/main/scala/org/apache/spark/sql/hudi/analysis/HoodieSpark40Analysis.scala
@@ -21,7 +21,9 @@ import org.apache.hudi.{DefaultSource, EmptyRelation,
HoodieBaseRelation}
import org.apache.hudi.SparkAdapterSupport.sparkAdapter
import org.apache.spark.sql.SparkSession
+import org.apache.spark.sql.catalyst.analysis.TableOutputResolver
import org.apache.spark.sql.catalyst.catalog.HiveTableRelation
+import org.apache.spark.sql.catalyst.expressions.Attribute
import org.apache.spark.sql.catalyst.plans.logical._
import org.apache.spark.sql.catalyst.rules.Rule
import org.apache.spark.sql.execution.datasources.{HadoopFsRelation,
LogicalRelation}
@@ -101,4 +103,11 @@ case class HoodieSpark40ResolveColumnsForInsertInto()
extends HoodieSpark4Resolv
case _ => plan
}
}
+
+ override protected def resolveOutputColumns(tblName: String,
+ expectedColumns: Seq[Attribute],
+ query: LogicalPlan,
+ byName: Boolean): LogicalPlan =
+ TableOutputResolver.resolveOutputColumns(
+ tblName, expectedColumns, query, byName, conf, supportColDefaultValue =
true)
}
diff --git
a/hudi-spark-datasource/hudi-spark4.1.x/src/main/scala/org/apache/spark/sql/hudi/analysis/HoodieSpark41Analysis.scala
b/hudi-spark-datasource/hudi-spark4.1.x/src/main/scala/org/apache/spark/sql/hudi/analysis/HoodieSpark41Analysis.scala
index 1a57c2976719..7ac107ac341b 100644
---
a/hudi-spark-datasource/hudi-spark4.1.x/src/main/scala/org/apache/spark/sql/hudi/analysis/HoodieSpark41Analysis.scala
+++
b/hudi-spark-datasource/hudi-spark4.1.x/src/main/scala/org/apache/spark/sql/hudi/analysis/HoodieSpark41Analysis.scala
@@ -21,7 +21,9 @@ import org.apache.hudi.{DefaultSource, EmptyRelation,
HoodieBaseRelation}
import org.apache.hudi.SparkAdapterSupport.sparkAdapter
import org.apache.spark.sql.SparkSession
+import org.apache.spark.sql.catalyst.analysis.TableOutputResolver
import org.apache.spark.sql.catalyst.catalog.HiveTableRelation
+import org.apache.spark.sql.catalyst.expressions.Attribute
import org.apache.spark.sql.catalyst.plans.logical._
import org.apache.spark.sql.catalyst.rules.Rule
import org.apache.spark.sql.execution.datasources.{HadoopFsRelation,
LogicalRelation}
@@ -101,4 +103,11 @@ case class HoodieSpark41ResolveColumnsForInsertInto()
extends HoodieSpark4Resolv
case _ => plan
}
}
+
+ override protected def resolveOutputColumns(tblName: String,
+ expectedColumns: Seq[Attribute],
+ query: LogicalPlan,
+ byName: Boolean): LogicalPlan =
+ TableOutputResolver.resolveOutputColumns(
+ tblName, expectedColumns, query, byName, conf, supportColDefaultValue =
true)
}
diff --git
a/hudi-spark-datasource/hudi-spark4.2.x/src/main/scala/org/apache/hudi/Spark42HoodiePartitionValues.scala
b/hudi-spark-datasource/hudi-spark4.2.x/src/main/scala/org/apache/hudi/Spark42HoodiePartitionValues.scala
index aa53fa4a5b58..91229b2720d0 100644
---
a/hudi-spark-datasource/hudi-spark4.2.x/src/main/scala/org/apache/hudi/Spark42HoodiePartitionValues.scala
+++
b/hudi-spark-datasource/hudi-spark4.2.x/src/main/scala/org/apache/hudi/Spark42HoodiePartitionValues.scala
@@ -20,7 +20,7 @@
package org.apache.hudi
import org.apache.spark.sql.catalyst.InternalRow
-import org.apache.spark.unsafe.types.{GeographyVal, GeometryVal}
+import org.apache.spark.unsafe.types.BinaryView
case class Spark42HoodiePartitionValues(override val values: InternalRow)
extends Spark4HoodiePartitionValues(values) {
@@ -29,11 +29,7 @@ case class Spark42HoodiePartitionValues(override val values:
InternalRow)
Spark42HoodiePartitionValues(values.copy())
}
- override def getGeography(ordinal: Int): GeographyVal = {
- values.getGeography(ordinal)
- }
-
- override def getGeometry(ordinal: Int): GeometryVal = {
- values.getGeometry(ordinal)
+ override def getBinaryView(ordinal: Int): BinaryView = {
+ values.getBinaryView(ordinal)
}
}
diff --git
a/hudi-spark-datasource/hudi-spark4.2.x/src/main/scala/org/apache/hudi/client/model/Spark42HoodieInternalRow.scala
b/hudi-spark-datasource/hudi-spark4.2.x/src/main/scala/org/apache/hudi/client/model/Spark42HoodieInternalRow.scala
index 74a5355404b4..bfcfc5a3ee42 100644
---
a/hudi-spark-datasource/hudi-spark4.2.x/src/main/scala/org/apache/hudi/client/model/Spark42HoodieInternalRow.scala
+++
b/hudi-spark-datasource/hudi-spark4.2.x/src/main/scala/org/apache/hudi/client/model/Spark42HoodieInternalRow.scala
@@ -19,7 +19,7 @@
package org.apache.hudi.client.model
import org.apache.spark.sql.catalyst.InternalRow
-import org.apache.spark.unsafe.types.{GeographyVal, GeometryVal, UTF8String}
+import org.apache.spark.unsafe.types.{BinaryView, UTF8String}
class Spark42HoodieInternalRow(
metaFields: Array[UTF8String],
@@ -27,14 +27,9 @@ class Spark42HoodieInternalRow(
sourceContainsMetaFields: Boolean)
extends Spark4HoodieInternalRow(metaFields, sourceRow,
sourceContainsMetaFields) {
- override def getGeography(ordinal: Int): GeographyVal = {
- ruleOutMetaFieldsAccess(ordinal, classOf[GeographyVal])
- sourceRow.getGeography(rebaseOrdinal(ordinal))
- }
-
- override def getGeometry(ordinal: Int): GeometryVal = {
- ruleOutMetaFieldsAccess(ordinal, classOf[GeometryVal])
- sourceRow.getGeometry(rebaseOrdinal(ordinal))
+ override def getBinaryView(ordinal: Int): BinaryView = {
+ ruleOutMetaFieldsAccess(ordinal, classOf[BinaryView])
+ sourceRow.getBinaryView(rebaseOrdinal(ordinal))
}
override protected def newInternalRow(metaFields: Array[UTF8String],
diff --git
a/hudi-spark-datasource/hudi-spark4.2.x/src/main/scala/org/apache/spark/sql/hudi/analysis/HoodieSpark42Analysis.scala
b/hudi-spark-datasource/hudi-spark4.2.x/src/main/scala/org/apache/spark/sql/hudi/analysis/HoodieSpark42Analysis.scala
index 7d35378aa000..72d0911d31f8 100644
---
a/hudi-spark-datasource/hudi-spark4.2.x/src/main/scala/org/apache/spark/sql/hudi/analysis/HoodieSpark42Analysis.scala
+++
b/hudi-spark-datasource/hudi-spark4.2.x/src/main/scala/org/apache/spark/sql/hudi/analysis/HoodieSpark42Analysis.scala
@@ -21,7 +21,9 @@ import org.apache.hudi.{DefaultSource, EmptyRelation,
HoodieBaseRelation}
import org.apache.hudi.SparkAdapterSupport.sparkAdapter
import org.apache.spark.sql.SparkSession
+import org.apache.spark.sql.catalyst.analysis.TableOutputResolver
import org.apache.spark.sql.catalyst.catalog.HiveTableRelation
+import org.apache.spark.sql.catalyst.expressions.Attribute
import org.apache.spark.sql.catalyst.plans.logical._
import org.apache.spark.sql.catalyst.rules.Rule
import org.apache.spark.sql.execution.datasources.{HadoopFsRelation,
LogicalRelation}
@@ -101,4 +103,12 @@ case class HoodieSpark42ResolveColumnsForInsertInto()
extends HoodieSpark4Resolv
case _ => plan
}
}
+
+ override protected def resolveOutputColumns(tblName: String,
+ expectedColumns: Seq[Attribute],
+ query: LogicalPlan,
+ byName: Boolean): LogicalPlan =
+ TableOutputResolver.resolveOutputColumns(
+ tblName, expectedColumns, query, byName, conf,
+ defaultValueFillMode = TableOutputResolver.DefaultValueFillMode.FILL)
}
diff --git
a/packaging/bundle-validation/base/build_flink1200hive313spark420previewscala213.sh
b/packaging/bundle-validation/base/build_flink1200hive313spark420scala213.sh
similarity index 80%
rename from
packaging/bundle-validation/base/build_flink1200hive313spark420previewscala213.sh
rename to
packaging/bundle-validation/base/build_flink1200hive313spark420scala213.sh
index 56fad3594a70..bcd6456fc575 100755
---
a/packaging/bundle-validation/base/build_flink1200hive313spark420previewscala213.sh
+++ b/packaging/bundle-validation/base/build_flink1200hive313spark420scala213.sh
@@ -20,10 +20,10 @@
docker build \
--build-arg HIVE_VERSION=3.1.3 \
--build-arg FLINK_VERSION=1.20.1 \
- --build-arg SPARK_VERSION=4.2.0-preview4 \
+ --build-arg SPARK_VERSION=4.2.0 \
--build-arg SPARK_HADOOP_VERSION=3 \
- --build-arg HADOOP_VERSION=3.4.3 \
+ --build-arg HADOOP_VERSION=3.5.0 \
--build-arg SCALA_VERSION=2.13 \
--build-arg DERBY_VERSION=10.16.1.1 \
- -t hudi-ci-bundle-validation-base:flink1200hive313spark420previewscala213 .
-docker image tag
hudi-ci-bundle-validation-base:flink1200hive313spark420previewscala213
apachehudi/hudi-ci-bundle-validation-base:flink1200hive313spark420previewscala213
+ -t hudi-ci-bundle-validation-base:flink1200hive313spark420scala213 .
+docker image tag
hudi-ci-bundle-validation-base:flink1200hive313spark420scala213
apachehudi/hudi-ci-bundle-validation-base:flink1200hive313spark420scala213
diff --git a/packaging/bundle-validation/ci_run.sh
b/packaging/bundle-validation/ci_run.sh
index 64cbf0d53caf..178b647dd033 100755
--- a/packaging/bundle-validation/ci_run.sh
+++ b/packaging/bundle-validation/ci_run.sh
@@ -147,16 +147,16 @@ elif [[ ${SPARK_RUNTIME} == 'spark4.1.1' &&
${SCALA_PROFILE} == 'scala-2.13' ]];
CONFLUENT_VERSION=5.5.12
KAFKA_CONNECT_HDFS_VERSION=10.1.13
IMAGE_TAG=flink1200hive313spark411scala213
-elif [[ ${SPARK_RUNTIME} == 'spark4.2.0-preview4' && ${SCALA_PROFILE} ==
'scala-2.13' ]]; then
- HADOOP_VERSION=3.4.3
+elif [[ ${SPARK_RUNTIME} == 'spark4.2.0' && ${SCALA_PROFILE} == 'scala-2.13'
]]; then
+ HADOOP_VERSION=3.5.0
HIVE_VERSION=3.1.3
DERBY_VERSION=10.14.1.0
FLINK_VERSION=1.20.1
- SPARK_VERSION=4.2.0-preview4
+ SPARK_VERSION=4.2.0
SPARK_HADOOP_VERSION=3
CONFLUENT_VERSION=5.5.12
KAFKA_CONNECT_HDFS_VERSION=10.1.13
- IMAGE_TAG=flink1200hive313spark420previewscala213
+ IMAGE_TAG=flink1200hive313spark420scala213
fi
# Copy bundle jars to temp dir for mounting
diff --git a/packaging/bundle-validation/run_docker_java17.sh
b/packaging/bundle-validation/run_docker_java17.sh
index 8164c0b3092e..a34ae1f77d74 100755
--- a/packaging/bundle-validation/run_docker_java17.sh
+++ b/packaging/bundle-validation/run_docker_java17.sh
@@ -103,16 +103,16 @@ elif [[ ${SPARK_RUNTIME} == 'spark4.1.1' &&
${SCALA_PROFILE} == 'scala-2.13' ]];
CONFLUENT_VERSION=5.5.12
KAFKA_CONNECT_HDFS_VERSION=10.1.13
IMAGE_TAG=flink1200hive313spark411scala213
-elif [[ ${SPARK_RUNTIME} == 'spark4.2.0-preview4' && ${SCALA_PROFILE} ==
'scala-2.13' ]]; then
- HADOOP_VERSION=3.4.3
+elif [[ ${SPARK_RUNTIME} == 'spark4.2.0' && ${SCALA_PROFILE} == 'scala-2.13'
]]; then
+ HADOOP_VERSION=3.5.0
HIVE_VERSION=3.1.3
DERBY_VERSION=10.14.1.0
FLINK_VERSION=1.20.1
- SPARK_VERSION=4.2.0-preview4
+ SPARK_VERSION=4.2.0
SPARK_HADOOP_VERSION=3
CONFLUENT_VERSION=5.5.12
KAFKA_CONNECT_HDFS_VERSION=10.1.13
- IMAGE_TAG=flink1200hive313spark420previewscala213
+ IMAGE_TAG=flink1200hive313spark420scala213
fi
# build docker image
diff --git a/packaging/bundle-validation/validate.sh
b/packaging/bundle-validation/validate.sh
index a432d12c6272..f2b05325e567 100755
--- a/packaging/bundle-validation/validate.sh
+++ b/packaging/bundle-validation/validate.sh
@@ -80,7 +80,7 @@ use_default_java_runtime () {
test_spark_hadoop_mr_bundles () {
echo "::warning::validate.sh setting up hive metastore for spark &
hadoop-mr bundles validation"
- if [ "$SPARK_VERSION" = "4.0.0" ] || [ "$SPARK_VERSION" = "4.1.1" ] || [
"$SPARK_VERSION" = "4.2.0-preview4" ]; then
+ if [[ "$SPARK_VERSION" == 4.* ]]; then
change_java_runtime_version
fi
$DERBY_HOME/bin/startNetworkServer -h 0.0.0.0 &
@@ -112,7 +112,7 @@ test_spark_hadoop_mr_bundles () {
numRecordsHiveQL=$(cat $hiveqlresultsdir/*.csv | wc -l)
if [ "$numRecordsHiveQL" -ne 10 ]; then
echo "::error::validate.sh HiveQL validation failed."
- if [ "$SPARK_VERSION" = "4.0.0" ] || [ "$SPARK_VERSION" = "4.1.1" ] ||
[ "$SPARK_VERSION" = "4.2.0-preview4" ]; then
+ if [[ "$SPARK_VERSION" == 4.* ]]; then
echo "::error::validate.sh Debug info for Spark4 validation
failure:"
$HIVE_HOME/bin/beeline --hiveconf
hive.input.format=org.apache.hudi.hadoop.HoodieParquetInputFormat \
-u jdbc:hive2://localhost:10000/default
--showHeader=true --outputformat=csv2 \
@@ -259,7 +259,7 @@ test_metaserver_bundle () {
java -jar $JARS_DIR/metaserver.jar &
local METASEVER_PID=$!
- if [ "$SPARK_VERSION" = "4.0.0" ] || [ "$SPARK_VERSION" = "4.1.1" ] || [
"$SPARK_VERSION" = "4.2.0-preview4" ]; then
+ if [[ "$SPARK_VERSION" == 4.* ]]; then
change_java_runtime_version
fi
echo "::warning::validate.sh Start hive server"
diff --git a/pom.xml b/pom.xml
index a5a4d0685cd5..c7c66e712c73 100644
--- a/pom.xml
+++ b/pom.xml
@@ -178,7 +178,7 @@
<spark35.version>3.5.5</spark35.version>
<spark40.version>4.0.2</spark40.version>
<spark41.version>4.1.1</spark41.version>
- <spark42.version>4.2.0-preview4</spark42.version>
+ <spark42.version>4.2.0</spark42.version>
<hudi.spark.module>hudi-spark3.5.x</hudi.spark.module>
<hudi.spark.common.module>hudi-spark3-common</hudi.spark.common.module>
<avro.version>1.11.4</avro.version>
@@ -3002,7 +3002,7 @@
<!-- This glob has to include hudi-spark4-common -->
<hudi.spark.common.module>hudi-spark4-common</hudi.spark.common.module>
<scalatest.version>${scalatest.spark4.version}</scalatest.version>
- <hadoop.version>3.4.3</hadoop.version>
+ <hadoop.version>3.5.0</hadoop.version>
<kafka.version>3.9.2</kafka.version>
<hive.storage.version>2.8.1</hive.storage.version>
<!-- TODO: Enable lance tests on Spark 4.2 -->
@@ -3031,7 +3031,7 @@
both provide the same net.jpountz.lz4 package so we must use the
Spark-provided one
to avoid classpath conflicts (the newer version adds
LZ4BlockInputStream.newBuilder()) -->
<lz4.groupId>at.yawk.lz4</lz4.groupId>
- <lz4.version>1.10.4</lz4.version>
+ <lz4.version>1.11.0</lz4.version>
<skip.hudi-spark2.unit.tests>true</skip.hudi-spark2.unit.tests>
<skipITs>true</skipITs>
</properties>