我正在应用MLlib LDA进行主题建模 . 我正在设置lda参数如下:

lda.setOptimizer(optimizer)
  .setK(params.k)
  .setMaxIterations(params.maxIterations)
  .setDocConcentration(params.docConcentration)
  .setTopicConcentration(params.topicConcentration)
  .setCheckpointInterval(params.checkpointInterval)
  if (params.checkpointDir.nonEmpty) {
      sc.setCheckpointDir(params.checkpointDir.get)
  }

我在我的本地MacOS机器上运行LDA算法,在800,000英文文本文档(总大小9GB)的语料库中,我的机器有8个内核,16GB或RAM和500GB或硬盘 .

这是我的Spark配置:

val conf = new SparkConf().setMaster("local[6]").setAppName("LDAExample")
val sc = new SparkContext(conf)

当使用大量迭代(100)调用LDA时(即通过调用 val ldaModel = lda.run(corpus) ),算法开始在我的磁盘上创建随机文件,直到它还有剩余空间 .

我使用spark-submit运行我的程序如下:

spark-submit --driver-memory 14G --class com.mycompany.spark.ml.topicmodelling.LDAExample ./target/scala-2.10/lda-assembly-1.0.jar path/to/copurs/file --k 100 --maxIterations 100 --checkpointDir /path/to/checkpoints/directory --checkpointInterval 1

其中'K'是要提取的主题的数量,当迭代次数和主题都很小时,一切都很好,但是当有大的迭代次数如100时,无论--checkpointInterval的值是什么,现象都是一样的:磁盘将在大约25次迭代后填满 .

一切似乎都运行正常,我的磁盘上创建了检查点文件,但根本不删除随机播放文件 .

我使用Spark和MLlib 1.5.0,我的机器是Mac Yosemite 10.10.5 .

任何帮助都非常感谢 . 谢谢