From 64e719843929a75208f18dbca599bb263449fb86 Mon Sep 17 00:00:00 2001 From: Funes Date: Tue, 6 May 2014 17:26:15 +0800 Subject: [PATCH] Copy data only when necessary --- .../main/scala/org/apache/spark/mllib/linalg/Vectors.scala | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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 46f30edc9425c..b883c040dc8c7 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 @@ -136,7 +136,12 @@ object Vectors { new DenseVector(v.toArray) // Can't use underlying array directly, so make a new one } case v: BSV[Double] => - new SparseVector(v.length, v.index.slice(0, v.used), v.data.slice(0, v.used)) + if (v.index.length == v.used) { + new SparseVector(v.length, v.index, v.data) + } + else { + new SparseVector(v.length, v.index.slice(0, v.used), v.data.slice(0, v.used)) + } case v: BV[_] => sys.error("Unsupported Breeze vector type: " + v.getClass.getName) }