我在64GB RAM,32核和500GB磁盘空间的系统上运行Jupyter笔记本。
大约700k文档将被建模为600个主题。词汇量大小为48000字。使用100次迭代。
spark = SparkSession.builder.appName('LDA').master("local[*]").config("spark.local.dir", "/data/Data/allYears/tempAll").config("spark.driver.memory","50g").config("spark.executor.memory","50g").getOrCreate()
dataset = spark.read.format("libsvm").load("libsm_file.txt")
lda = LDA(k=600, maxIter=100 , optimizer='em' , seed=2 )
lda.setDocConcentration([1.01])
lda.setTopicConcentration(1.001)
model = lda.fit(dataset)
运行10小时后出现磁盘配额超出错误
您提到您遇到的错误消息表明已超出磁盘配额。我怀疑Spark正在将数据转移到磁盘并且磁盘空间不足。
要缓解这种情况,您应该尝试将--conf spark.local.dir=<path to disk with space>
显式传递到具有足够空间的位置。此参数指定Spark将用于将临时数据写入磁盘的路径(例如,在作业的各阶段之间编写随机数据时)。即使您的输入和输出数据不是特别大,某些算法也会产生大量的随机数据。
您还可以考虑在运行作业时使用du
监视此路径的已分配/可用空间,以获取有关正在写入多少中间数据的更多信息。这将确认大量的洗牌数据耗尽可用磁盘空间是问题。