有没有办法在Apache Spark中创建一个空的RowMatrix。我试过以下
double[] empty = new double[0];
Vector vector = Vectors.dense(empty);
但我无法从vector创建Vector的JavaRDD,因此我可以从中创建RowMatrix。
先谢谢。
答案 0 :(得分:1)
从https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.mllib.linalg.distributed.RowMatrix看,无法创建空的RowMatrix
因此构造函数需要传递RDD< Vector>作为呼唤方式之一
我在Scala中尝试了一个spark-shell示例。希望这有帮助
import org.apache.spark.mllib.linalg.Vector
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.linalg.distributed.RowMatrix
val data = sc.parallelize(Array(Array[Double](1,2,3,4),Array[Double](2,3,4,5),Array[Double](3,4,5,6))).map(x=> Vectors.dense(x))
val rowMatrix: RowMatrix = new RowMatrix(data)
现在我们可以在RowMatrix类型的rowMatrix上执行所需的操作,而数据是RDD< Vector>
另外,Vectors.dense需要一个Arrays列表为Double,因此我们可能需要将初始数组设置为Double,如果它还没有。