RowMatrix mat = new RowMatrix(parsedData.rdd());
Matrix pc = mat.computePrincipalComponents(1);
RowMatrix projected = mat.multiply(pc);
我需要打印使用java
投影的RowMatrix中的元素答案 0 :(得分:5)
RowMatrix
是一种分布式数据结构,可靠输出其内容的唯一方法是将数据提取到驱动程序并在本地打印。通常,这是您要避免的操作,但一般方法如下
val mat: RowMatrix = ???
mat
.rows // Extract RDD[org.apache.spark.mllib.linalg.Vector]
.collect // you can use toLocalIterator to limit memory usage
.foreach(println) // Iterate over local Iterator and print
Java等价物是这样的:
List<Vector> vs = mat.rows().toJavaRDD().collect();
for(Vector v: vs) {
System.out.println(v);
}
在实践中,不需要像这样的操作。如果您的数据足够小,无法在本地处理,则没有理由使用DistributedMatrix
。如果数据很大但很宽,那么RowMatrix
对于分布式数据结构来说是一个糟糕的选择。