【问题标题】:spark mllib memory error on svd (single machine)svd上的spark mllib内存错误(单机)
【发布时间】:2015-03-30 14:05:06
【问题描述】:

我有一个大数据文件(大约 4 GB),我正在单台电脑上使用 spark 对其进行分析。

scala> x
res29: org.apache.spark.mllib.linalg.distributed.RowMatrix = org.apache.spark.mllib.linalg.distributed.RowMatrix@5a86096a

scala> x.numRows
res27: Long = 302529

scala> x.numCols
res28: Long = 1828

当我尝试计算主成分时出现内存错误:

scala> val pc: Matrix = x.computePrincipalComponents(2)

     15/03/30 14:55:22 INFO ContextCleaner: Cleaned shuffle 1
    java.lang.OutOfMemoryError: Java heap space
        at breeze.linalg.svd$.breeze$linalg$svd$$doSVD_Double(svd.scala:92)
        at breeze.linalg.svd$Svd_DM_Impl$.apply(svd.scala:39)
        at breeze.linalg.svd$Svd_DM_Impl$.apply(svd.scala:38)
        at breeze.generic.UFunc$class.apply(UFunc.scala:48)
        at breeze.linalg.svd$.apply(svd.scala:22)
        at org.apache.spark.mllib.linalg.distributed.RowMatrix.computePrincipalComponents(RowMatrix.scala:380)
        at $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.<init>(<console>:39)

我该如何解决?

【问题讨论】:

    标签: scala apache-spark apache-spark-mllib


    【解决方案1】:

    如果您碰巧拥有比 Spark 当前使用的更多 RAM,您可以尝试使用命令行选项 --driver-memory 8g 增加 Java 堆大小(假设此处为“本地”模式,其中计算由驱动程序完成程序)。默认只有512m。

    【讨论】:

      猜你喜欢
      • 2015-05-12
      • 2015-12-13
      • 2015-07-08
      • 2019-11-16
      • 2014-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多