我是新来的火花,我使用KMeans算法来聚类数据集,其大小为484M,213104维度,我的代码如下:
using (ISession session = SessionFactory.OpenSession)
{
IQuery query = session.CreateQuery("FROM Products");
IList<Products> pInfos = query.List<Products>();
dgView.DataSource = pInfos;
}
当我设置K = 150时,它可以工作,但是当我设置K = 300时,它会抛出val k = args(0).toInt
val maxIter = args(1).toInt
val model = new KMeans().setK(k).setMaxIterations(maxIter).setEpsilon(1e-1).run(trainingData)
val modelRDD = sc.makeRDD(model.clusterCenters)
val saveModelPath = "/home/work/kMeansModel_" + args(0)
if(Files.exists(Paths.get(saveModelPath))) {
FileUtils.deleteDirectory(new File(saveModelPath))
}
modelRDD.saveAsTextFile(saveModelPath)
val loss = model.computeCost(trainingData)
println("Within Set Sum of Squared Errors = " + loss)
异常。我的配置:
java.lang.OutOfMemoryError: Java heap space
答案 0 :(得分:0)
您应该告诉我们有关环境的更多信息。您是在真实群集中运行还是在本地模式下运行?
既然你说你是Spark的新手,我认为你只是在你的本地机器上玩。在这种情况下,我认为post可以帮助您。
您的错误不是真正的OOM,而是堆空间异常。你有没有缓存你的RDD?