Spark ALS.train()迭代次数过多导致java.lang.StackOverflowError

问题描述:

使用Spark ALS.train()做协同过滤的模型训练时,迭代次数过多(iteration>=3)可能导致java.lang.StackOverflowError的错误。

解决方案:

一般情况下ALS收敛是非常快的,将iteration设置为<30的数字就可以了。次数过多的情况下就会出现:java.lang.StackOverflowError。当然,也可也通过设置checkpoint来解决。

附问题的原始回答:

Xiangrui Meng added a comment – 07/Oct/14 01:46

This is a known issue. We can fix it by checkpointing intermediate RDDs. For now, please use a smaller number of iterations (<30). Usually, ALS converges within that number of iterations.

 

原始问题报告详见:

https://issues.apache.org/jira/browse/SPARK-3370

【转载请注明:纯净的天空出品: http://www.fuqingchuan.com/2015/06/946.html