如何在Spark

时间:2015-07-20 16:18:30

标签: scala apache-spark cluster-computing rdd apache-spark-mllib

我正在使用MLLib库和MLUtils.loadLibSVMFile()方法。我有一个10GB的文件和5个从属的集群,每个有2个内核和6 GB内存。根据找到的文档here,该方法具有以下参数:

loadLibSVMFile(sc, path, multiclass=False, numFeatures=-1, minPartitions=None)

我想有10个分区,我不知道功能的数量。当我在没有指定最小分区的情况下运行方法时,我得到了预期的java.lang.OutOfMemoryError: Java heap space

但是,当我在文档中指定numFeatures为-1时,并且将分区数指定为10,基于WebUI,它确实分配了工作,但过了一段时间我得到{{1} }。其余代码看起来与编写here.

的示例代码完全相同

我是Spark的新手,所以请告诉我,如果我犯了一些明显的错误。谢谢!

编辑2:我使用一个小而密集的样本数据集运行相同的东西,它运行正常。似乎是功能数量的问题?

编辑3: 这是我试图运行的代码:

java.lang.ArrayIndexOutOfBoundsException

以下是例外:

object MLLibExample {
  def main(args: Array[String]) {
    val sc = new SparkContext()
    //loading the RDD
    val data = MLUtils.loadLibSVMFile(sc, "s3n://file.libsvm", -1, 10)
    // Run training algorithm to build the model
    val numIterations = 10
    val model = SVMWithSGD.train(data, numIterations)
    }
}

- 我已确保输入文件格式正确(0/1标签和空格分隔)

- 尝试原始文件的子样本,即10 MB

- 设置驱动程序和执行程序内存

- 在我的spark-submit命令中添加了这个标签: - conf“spark.driver.maxResultSize = 6G”

0 个答案:

没有答案