问题描述:
使用Spark ALS.train()做协同过滤的模型训练时,迭代次数过多(iteration>=30)可能导致java.lang.StackOverflowError的错误。
解决方案:
一般情况下ALS收敛是非常快的,将iteration设置为<30的数字就可以了,绝大多数情况下,设置为15就行。次数过多的情况下就会出现: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.
原始问题报告详见: