aboutsummaryrefslogtreecommitdiff
path: root/mllib/src
diff options
context:
space:
mode:
authorYanbo Liang <ybliang8@gmail.com>2015-09-22 11:00:33 -0700
committerJoseph K. Bradley <joseph@databricks.com>2015-09-22 11:00:33 -0700
commit7104ee0e5dc1290b8b845a0a8ddcdb1875cfd060 (patch)
tree1009f8b0f47937deb3f75347fb92e23d4ea66177 /mllib/src
parentf4a3c4e34ce93bcaf29c0a35573932880a8b792b (diff)
downloadspark-7104ee0e5dc1290b8b845a0a8ddcdb1875cfd060.tar.gz
spark-7104ee0e5dc1290b8b845a0a8ddcdb1875cfd060.tar.bz2
spark-7104ee0e5dc1290b8b845a0a8ddcdb1875cfd060.zip
[SPARK-10750] [ML] ML Param validate should print better error information
Currently when you set illegal value for params of array type (such as IntArrayParam, DoubleArrayParam, StringArrayParam), it will throw IllegalArgumentException but with incomprehensible error information. Take ```VectorSlicer.setNames``` as an example: ```scala val vectorSlicer = new VectorSlicer().setInputCol("features").setOutputCol("result") // The value of setNames must be contain distinct elements, so the next line will throw exception. vectorSlicer.setIndices(Array.empty).setNames(Array("f1", "f4", "f1")) ``` It will throw IllegalArgumentException as: ``` vectorSlicer_b3b4d1a10f43 parameter names given invalid value [Ljava.lang.String;798256c5. java.lang.IllegalArgumentException: vectorSlicer_b3b4d1a10f43 parameter names given invalid value [Ljava.lang.String;798256c5. ``` We should distinguish the value of array type from primitive type at Param.validate(value: T), and we will get better error information. ``` vectorSlicer_3b744ea277b2 parameter names given invalid value [f1,f4,f1]. java.lang.IllegalArgumentException: vectorSlicer_3b744ea277b2 parameter names given invalid value [f1,f4,f1]. ``` Author: Yanbo Liang <ybliang8@gmail.com> Closes #8863 from yanboliang/spark-10750.
Diffstat (limited to 'mllib/src')
-rw-r--r--mllib/src/main/scala/org/apache/spark/ml/param/params.scala7
1 files changed, 6 insertions, 1 deletions
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 de32b7218c..48f6269e57 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
@@ -65,7 +65,12 @@ class Param[T](val parent: String, val name: String, val doc: String, val isVali
*/
private[param] def validate(value: T): Unit = {
if (!isValid(value)) {
- throw new IllegalArgumentException(s"$parent parameter $name given invalid value $value.")
+ val valueToString = value match {
+ case v: Array[_] => v.mkString("[", ",", "]")
+ case _ => value.toString
+ }
+ throw new IllegalArgumentException(
+ s"$parent parameter $name given invalid value $valueToString.")
}
}