aboutsummaryrefslogtreecommitdiff
path: root/mllib/src/test/scala/org
diff options
context:
space:
mode:
authorXiangrui Meng <meng@databricks.com>2015-11-17 10:17:16 -0800
committerJoseph K. Bradley <joseph@databricks.com>2015-11-17 10:17:16 -0800
commit21fac5434174389e8b83a2f11341fa7c9e360bfd (patch)
tree3e34fff4c100b7bbf273b95f87bdd6a456028937 /mllib/src/test/scala/org
parentcc567b6634c3142125526f4875795c1b1e862838 (diff)
downloadspark-21fac5434174389e8b83a2f11341fa7c9e360bfd.tar.gz
spark-21fac5434174389e8b83a2f11341fa7c9e360bfd.tar.bz2
spark-21fac5434174389e8b83a2f11341fa7c9e360bfd.zip
[SPARK-11766][MLLIB] add toJson/fromJson to Vector/Vectors
This is to support JSON serialization of Param[Vector] in the pipeline API. It could be used for other purposes too. The schema is the same as `VectorUDT`. jkbradley Author: Xiangrui Meng <meng@databricks.com> Closes #9751 from mengxr/SPARK-11766.
Diffstat (limited to 'mllib/src/test/scala/org')
-rw-r--r--mllib/src/test/scala/org/apache/spark/mllib/linalg/VectorsSuite.scala17
1 files changed, 17 insertions, 0 deletions
diff --git a/mllib/src/test/scala/org/apache/spark/mllib/linalg/VectorsSuite.scala b/mllib/src/test/scala/org/apache/spark/mllib/linalg/VectorsSuite.scala
index 6508ddeba4..f895e2a8e4 100644
--- a/mllib/src/test/scala/org/apache/spark/mllib/linalg/VectorsSuite.scala
+++ b/mllib/src/test/scala/org/apache/spark/mllib/linalg/VectorsSuite.scala
@@ -20,6 +20,7 @@ package org.apache.spark.mllib.linalg
import scala.util.Random
import breeze.linalg.{DenseMatrix => BDM, squaredDistance => breezeSquaredDistance}
+import org.json4s.jackson.JsonMethods.{parse => parseJson}
import org.apache.spark.{Logging, SparkException, SparkFunSuite}
import org.apache.spark.mllib.util.TestingUtils._
@@ -374,4 +375,20 @@ class VectorsSuite extends SparkFunSuite with Logging {
assert(v.slice(Array(2, 0)) === new SparseVector(2, Array(0), Array(2.2)))
assert(v.slice(Array(2, 0, 3, 4)) === new SparseVector(4, Array(0, 3), Array(2.2, 4.4)))
}
+
+ test("toJson/fromJson") {
+ val sv0 = Vectors.sparse(0, Array.empty, Array.empty)
+ val sv1 = Vectors.sparse(1, Array.empty, Array.empty)
+ val sv2 = Vectors.sparse(2, Array(1), Array(2.0))
+ val dv0 = Vectors.dense(Array.empty[Double])
+ val dv1 = Vectors.dense(1.0)
+ val dv2 = Vectors.dense(0.0, 2.0)
+ for (v <- Seq(sv0, sv1, sv2, dv0, dv1, dv2)) {
+ val json = v.toJson
+ parseJson(json) // `json` should be a valid JSON string
+ val u = Vectors.fromJson(json)
+ assert(u.getClass === v.getClass, "toJson/fromJson should preserve vector types.")
+ assert(u === v, "toJson/fromJson should preserve vector values.")
+ }
+ }
}