如何在java中打印RowMatrix的元素?

时间:2016-02-17 06:30:16

标签: java apache-spark apache-spark-mllib

RowMatrix mat = new RowMatrix(parsedData.rdd());
Matrix pc = mat.computePrincipalComponents(1);
RowMatrix projected = mat.multiply(pc);

我需要打印使用java

投影的RowMatrix中的元素

1 个答案:

答案 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对于分布式数据结构来说是一个糟糕的选择。