Spark mllib svd 给出:Java OutOfMemory 错误

Spark mllib svd gives: Java OutOfMemory Error

我正在使用 mllib 的 svd 库对大矩阵进行降维:

我收到以下警告和错误消息:

WARN ARPACK: Failed to load implementation from: com.github.fommil.netlib.NativeSystemARPACK WARN ARPACK: Failed to load implementation from: com.github.fommil.netlib.NativeRefARPACK WARN BLAS: Failed to load implementation from: com.github.fommil.netlib.NativeSystemBLAS WARN BLAS: Failed to load implementation from: com.github.fommil.netlib.NativeRefBLAS Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

at java.util.Arrays.copyOfRange(Arrays.java:2766) 
at org.apache.spark.mllib.linalg.EigenValueDecomposition$.symmetricEigs(EigenValueDecomposition.scala:128)

at org.apache.spark.mllib.linalg.distributed.RowMatrix.computeSVD(RowMatrix.scala:258)

at org.apache.spark.mllib.linalg.distributed.RowMatrix.computeSVD(RowMatrix.scala:190)

为了解决警告消息,我使用以下命令构建 Spark (1.2) -Pnetlib-lgpl 在本地,我在本地测试时警告信息消失了。并且日志显示 netlib 库工作正常:

15/03/05 20:07:03 INFO JniLoader: successfully loaded /tmp/jniloader7217840327264308862netlib-native_system-linux-x86_64.so 15/03/05 20:07:11 INFO JniLoader: already loaded netlib-native_system-linux-x86_64.so

然后我安装了用-Pnetlib-lgpl on AWS EMR编译的Spark (1.2),但是警告和错误信息仍然出现。

我不确定是不是我本地编译的问题,所以我编译Spark (1.2) on AWS EC2安装到AWS EMR上,但是仍然出现警告和错误信息。

谁能告诉我如何解决这个问题?非常感谢!

问题已部分解决。感谢@SeanOwen 的评论。

我收到 java 内存错误的原因是,顶级特征向量的计算是在驱动程序上进行的,所以我需要确保驱动程序节点上有足够的内存。

spark-submit--driver-memory 5G一起使用时,问题解决。

但警告信息仍然存在。