RowMatrix,MLlib,Java Spark

时间:2015-07-24 08:46:30

标签: java matrix apache-spark

我有RowMatrix而我的问题是,我如何通过指标来操纵它?这个问题非常适合这个问题:

Matrix Operation in Spark MLlib in Java

最后,我需要的是将Matrix与优秀的类库结合起来。目前我无法操纵这个对象。

1 个答案:

答案 0 :(得分:1)

由于RowMatrix的JavaDocs表示

  

:: Experimental ::表示一个面向行的分布式矩阵,没有有意义的行索引。

行上没有排序。您可以通过调用breeze.linalg.DenseMatrix从中获取toBreeze,但您无法保证行的排序。它们只是在到达主控器时插入到结果矩阵中。这意味着此操作的结果可能会不时变化。

如果您需要toBreeze操作的确定性结果,则必须使用IndexedRowMatrix。每行都分配了一个行索引,用于构建breeze.linalg.DenseMatrix

然后,您可以使用建议的here解决方案,即

import no.uib.cipr.matrix.DenseMatrix;
// ...
IndexedRowMatrix U = svd.U();
DenseMatrix U_mtj = new DenseMatrix((int) U.numCols(), (int) U.numRows(), U.toBreeze().toArray$mcD$sp(), true);
// From there, matrix operations are available on U_mtj