aboutsummaryrefslogtreecommitdiff
path: root/mllib/src/main/scala
diff options
context:
space:
mode:
authorSandeep Singh <sandeep@techaddict.me>2016-05-19 17:24:42 -0700
committerXiangrui Meng <meng@databricks.com>2016-05-19 17:24:42 -0700
commitef43a5fe51614eecce2d144cc13b33004a47533a (patch)
treed3cd7eb76e543f77812021db6cfee879930425ed /mllib/src/main/scala
parent59e6c5560d13def686091391aabe024ecb43174b (diff)
downloadspark-ef43a5fe51614eecce2d144cc13b33004a47533a.tar.gz
spark-ef43a5fe51614eecce2d144cc13b33004a47533a.tar.bz2
spark-ef43a5fe51614eecce2d144cc13b33004a47533a.zip
[SPARK-15414][MLLIB] Make the mllib,ml linalg type conversion APIs public
## What changes were proposed in this pull request? Open up APIs for converting between new, old linear algebra types (in spark.mllib.linalg): `Sparse`/`Dense` X `Vector`/`Matrices` `.asML` and `.fromML` ## How was this patch tested? Existing Tests Author: Sandeep Singh <sandeep@techaddict.me> Closes #13202 from techaddict/SPARK-15414.
Diffstat (limited to 'mllib/src/main/scala')
-rw-r--r--mllib/src/main/scala/org/apache/spark/mllib/linalg/Matrices.scala30
-rw-r--r--mllib/src/main/scala/org/apache/spark/mllib/linalg/Vectors.scala30
2 files changed, 42 insertions, 18 deletions
diff --git a/mllib/src/main/scala/org/apache/spark/mllib/linalg/Matrices.scala b/mllib/src/main/scala/org/apache/spark/mllib/linalg/Matrices.scala
index 5c9a112ca6..ee1956c2d4 100644
--- a/mllib/src/main/scala/org/apache/spark/mllib/linalg/Matrices.scala
+++ b/mllib/src/main/scala/org/apache/spark/mllib/linalg/Matrices.scala
@@ -164,7 +164,8 @@ sealed trait Matrix extends Serializable {
* Convert this matrix to the new mllib-local representation.
* This does NOT copy the data; it copies references.
*/
- private[spark] def asML: newlinalg.Matrix
+ @Since("2.0.0")
+ def asML: newlinalg.Matrix
}
private[spark] class MatrixUDT extends UserDefinedType[Matrix] {
@@ -427,7 +428,8 @@ class DenseMatrix @Since("1.3.0") (
}
}
- private[spark] override def asML: newlinalg.DenseMatrix = {
+ @Since("2.0.0")
+ override def asML: newlinalg.DenseMatrix = {
new newlinalg.DenseMatrix(numRows, numCols, values, isTransposed)
}
}
@@ -527,8 +529,11 @@ object DenseMatrix {
matrix
}
- /** Convert new linalg type to spark.mllib type. Light copy; only copies references */
- private[spark] def fromML(m: newlinalg.DenseMatrix): DenseMatrix = {
+ /**
+ * Convert new linalg type to spark.mllib type. Light copy; only copies references
+ */
+ @Since("2.0.0")
+ def fromML(m: newlinalg.DenseMatrix): DenseMatrix = {
new DenseMatrix(m.numRows, m.numCols, m.values, m.isTransposed)
}
}
@@ -740,7 +745,8 @@ class SparseMatrix @Since("1.3.0") (
}
}
- private[spark] override def asML: newlinalg.SparseMatrix = {
+ @Since("2.0.0")
+ override def asML: newlinalg.SparseMatrix = {
new newlinalg.SparseMatrix(numRows, numCols, colPtrs, rowIndices, values, isTransposed)
}
}
@@ -918,8 +924,11 @@ object SparseMatrix {
}
}
- /** Convert new linalg type to spark.mllib type. Light copy; only copies references */
- private[spark] def fromML(m: newlinalg.SparseMatrix): SparseMatrix = {
+ /**
+ * Convert new linalg type to spark.mllib type. Light copy; only copies references
+ */
+ @Since("2.0.0")
+ def fromML(m: newlinalg.SparseMatrix): SparseMatrix = {
new SparseMatrix(m.numRows, m.numCols, m.colPtrs, m.rowIndices, m.values, m.isTransposed)
}
}
@@ -1205,8 +1214,11 @@ object Matrices {
}
}
- /** Convert new linalg type to spark.mllib type. Light copy; only copies references */
- private[spark] def fromML(m: newlinalg.Matrix): Matrix = m match {
+ /**
+ * Convert new linalg type to spark.mllib type. Light copy; only copies references
+ */
+ @Since("2.0.0")
+ def fromML(m: newlinalg.Matrix): Matrix = m match {
case dm: newlinalg.DenseMatrix =>
DenseMatrix.fromML(dm)
case sm: newlinalg.SparseMatrix =>
diff --git a/mllib/src/main/scala/org/apache/spark/mllib/linalg/Vectors.scala b/mllib/src/main/scala/org/apache/spark/mllib/linalg/Vectors.scala
index 1f1cfa0cb2..7ebcd297bd 100644
--- a/mllib/src/main/scala/org/apache/spark/mllib/linalg/Vectors.scala
+++ b/mllib/src/main/scala/org/apache/spark/mllib/linalg/Vectors.scala
@@ -186,7 +186,8 @@ sealed trait Vector extends Serializable {
* Convert this vector to the new mllib-local representation.
* This does NOT copy the data; it copies references.
*/
- private[spark] def asML: newlinalg.Vector
+ @Since("2.0.0")
+ def asML: newlinalg.Vector
}
/**
@@ -581,8 +582,11 @@ object Vectors {
/** Max number of nonzero entries used in computing hash code. */
private[linalg] val MAX_HASH_NNZ = 128
- /** Convert new linalg type to spark.mllib type. Light copy; only copies references */
- private[spark] def fromML(v: newlinalg.Vector): Vector = v match {
+ /**
+ * Convert new linalg type to spark.mllib type. Light copy; only copies references
+ */
+ @Since("2.0.0")
+ def fromML(v: newlinalg.Vector): Vector = v match {
case dv: newlinalg.DenseVector =>
DenseVector.fromML(dv)
case sv: newlinalg.SparseVector =>
@@ -704,7 +708,8 @@ class DenseVector @Since("1.0.0") (
compact(render(jValue))
}
- private[spark] override def asML: newlinalg.DenseVector = {
+ @Since("2.0.0")
+ override def asML: newlinalg.DenseVector = {
new newlinalg.DenseVector(values)
}
}
@@ -716,8 +721,11 @@ object DenseVector {
@Since("1.3.0")
def unapply(dv: DenseVector): Option[Array[Double]] = Some(dv.values)
- /** Convert new linalg type to spark.mllib type. Light copy; only copies references */
- private[spark] def fromML(v: newlinalg.DenseVector): DenseVector = {
+ /**
+ * Convert new linalg type to spark.mllib type. Light copy; only copies references
+ */
+ @Since("2.0.0")
+ def fromML(v: newlinalg.DenseVector): DenseVector = {
new DenseVector(v.values)
}
}
@@ -911,7 +919,8 @@ class SparseVector @Since("1.0.0") (
compact(render(jValue))
}
- private[spark] override def asML: newlinalg.SparseVector = {
+ @Since("2.0.0")
+ override def asML: newlinalg.SparseVector = {
new newlinalg.SparseVector(size, indices, values)
}
}
@@ -922,8 +931,11 @@ object SparseVector {
def unapply(sv: SparseVector): Option[(Int, Array[Int], Array[Double])] =
Some((sv.size, sv.indices, sv.values))
- /** Convert new linalg type to spark.mllib type. Light copy; only copies references */
- private[spark] def fromML(v: newlinalg.SparseVector): SparseVector = {
+ /**
+ * Convert new linalg type to spark.mllib type. Light copy; only copies references
+ */
+ @Since("2.0.0")
+ def fromML(v: newlinalg.SparseVector): SparseVector = {
new SparseVector(v.size, v.indices, v.values)
}
}