From c25dd80c09507b2443c753213309b089366bb532 Mon Sep 17 00:00:00 2001 From: Uros Bojanic <221401595+uros-b@users.noreply.github.com> Date: Wed, 2 Sep 2026 09:46:50 +0000 Subject: [PATCH 1/2] [SPARK-59173][ML] Use isEmpty instead of size == 0 in MLlib --- .../src/main/scala/org/apache/spark/ml/tree/treeModels.scala | 2 +- .../scala/org/apache/spark/ml/recommendation/ALSSuite.scala | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mllib/src/main/scala/org/apache/spark/ml/tree/treeModels.scala b/mllib/src/main/scala/org/apache/spark/ml/tree/treeModels.scala index 5f45cc3315621..b230a18ee0642 100644 --- a/mllib/src/main/scala/org/apache/spark/ml/tree/treeModels.scala +++ b/mllib/src/main/scala/org/apache/spark/ml/tree/treeModels.scala @@ -229,7 +229,7 @@ private[ml] object TreeEnsembleModel { maxFeatureIndex + 1 } if (d == 0) { - assert(totalImportances.size == 0, s"Unknown error in computing feature" + + assert(totalImportances.isEmpty, s"Unknown error in computing feature" + s" importance: No splits found, but some non-zero importances.") } val (indices, values) = totalImportances.iterator.toSeq.sortBy(_._1).unzip diff --git a/mllib/src/test/scala/org/apache/spark/ml/recommendation/ALSSuite.scala b/mllib/src/test/scala/org/apache/spark/ml/recommendation/ALSSuite.scala index a5bff057bfec8..58cc9900d90de 100644 --- a/mllib/src/test/scala/org/apache/spark/ml/recommendation/ALSSuite.scala +++ b/mllib/src/test/scala/org/apache/spark/ml/recommendation/ALSSuite.scala @@ -995,8 +995,8 @@ class ALSSuite extends MLTest with DefaultReadWriteTest with Logging { val shuffledItemFactors = getShuffledDependencies(itemFactors.rdd).filter { dep => dep.rdd.name != null && dep.rdd.name.contains("itemFactors") } - assert(shuffledUserFactors.size == 0) - assert(shuffledItemFactors.size == 0) + assert(shuffledUserFactors.isEmpty) + assert(shuffledItemFactors.isEmpty) } private def checkRecommendations( From 55f6b5821e20e6fa447fb88d6eb439f2db5a94f2 Mon Sep 17 00:00:00 2001 From: Uros Bojanic <221401595+uros-b@users.noreply.github.com> Date: Wed, 2 Sep 2026 10:19:35 +0000 Subject: [PATCH 2/2] Use nonEmpty for size > 0 checks --- .../org/apache/spark/ml/tree/impl/DecisionTreeMetadata.scala | 2 +- .../org/apache/spark/mllib/tree/configuration/Strategy.scala | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mllib/src/main/scala/org/apache/spark/ml/tree/impl/DecisionTreeMetadata.scala b/mllib/src/main/scala/org/apache/spark/ml/tree/impl/DecisionTreeMetadata.scala index 181168385011d..ead7b4d27f46d 100644 --- a/mllib/src/main/scala/org/apache/spark/ml/tree/impl/DecisionTreeMetadata.scala +++ b/mllib/src/main/scala/org/apache/spark/ml/tree/impl/DecisionTreeMetadata.scala @@ -66,7 +66,7 @@ private[spark] class DecisionTreeMetadata( def isMulticlass: Boolean = numClasses > 2 - def isMulticlassWithCategoricalFeatures: Boolean = isMulticlass && (featureArity.size > 0) + def isMulticlassWithCategoricalFeatures: Boolean = isMulticlass && (featureArity.nonEmpty) def isCategorical(featureIndex: Int): Boolean = featureArity.contains(featureIndex) diff --git a/mllib/src/main/scala/org/apache/spark/mllib/tree/configuration/Strategy.scala b/mllib/src/main/scala/org/apache/spark/mllib/tree/configuration/Strategy.scala index c1f82157e82f2..ab6c6f7467563 100644 --- a/mllib/src/main/scala/org/apache/spark/mllib/tree/configuration/Strategy.scala +++ b/mllib/src/main/scala/org/apache/spark/mllib/tree/configuration/Strategy.scala @@ -98,7 +98,7 @@ class Strategy @Since("1.3.0") ( */ @Since("1.2.0") def isMulticlassWithCategoricalFeatures: Boolean = { - isMulticlassClassification && (categoricalFeaturesInfo.size > 0) + isMulticlassClassification && (categoricalFeaturesInfo.nonEmpty) } // scalastyle:off argcount