我使用hadoop/mahout来分解一个非常大的稀疏矩阵。问题是,我甚至不能用200个非零值和尺寸56000x56000来完成它,用python在不到一秒钟的时间内就解决了这个问题。我有一种令人毛骨悚然的怀疑,那就是计算在某个时候变得很密集了!
我现在使用的是单节点/核心。这有关系吗?所有操作都从java文件运行,而不是从命令行运行。我得到的例外是和老但好:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at org.apache.mahout.math.DenseMatrix.<init>(DenseMatrix.java:50)
at org.apache.mahout.math.solver.EigenDecomposition.<init>(EigenDecomposition.java:70)
at myhadoop.MyHadoop.main(MyHadoop.java:84)
java结果:1
当然,由于异常引用了densematrix,我很担心。如果它以某种方式使用重写的方法,我可能不太在意,但是如果实际的零被写入,那就不好了。而且,我的程序运行得很慢。
代码:
SparseRowMatrix A = new SparseRowMatrix();
// Matrix A is then created by adding elements one by one in a
// somewhat ordered fashion.
B SparseRowMatrix = A;
B.transpose();
A.plus(B);
EigenDecomposition eigDec = new EigenDecomposition(A, true);
myEig = eigDec.getRealEigenvalues();
如果事实并非如此,你有什么想法可以让它变得真正稀疏吗?
暂无答案!
目前还没有任何答案,快来回答吧!