diff --git a/mllib/src/main/scala/org/apache/spark/ml/Pipeline.scala b/mllib/src/main/scala/org/apache/spark/ml/Pipeline.scala index a1f3851d804ff..aef2c019d2871 100644 --- a/mllib/src/main/scala/org/apache/spark/ml/Pipeline.scala +++ b/mllib/src/main/scala/org/apache/spark/ml/Pipeline.scala @@ -95,6 +95,8 @@ class Pipeline(override val uid: String) extends Estimator[PipelineModel] { /** @group setParam */ def setStages(value: Array[PipelineStage]): this.type = { set(stages, value); this } + // Below, we clone stages so that modifications to the list of stages will not change + // the Param value in the Pipeline. /** @group getParam */ def getStages: Array[PipelineStage] = $(stages).clone() diff --git a/mllib/src/main/scala/org/apache/spark/ml/param/params.scala b/mllib/src/main/scala/org/apache/spark/ml/param/params.scala index 50c0d855066f8..d034d7ec6b60e 100644 --- a/mllib/src/main/scala/org/apache/spark/ml/param/params.scala +++ b/mllib/src/main/scala/org/apache/spark/ml/param/params.scala @@ -341,9 +341,7 @@ trait Params extends Identifiable with Serializable { * those are checked during schema validation. */ def validateParams(): Unit = { - params.filter(isDefined).foreach { param => - param.asInstanceOf[Param[Any]].validate($(param)) - } + // Do nothing by default. Override to handle Param interactions. } /**