栈溢出异常Exception in thread "dag-scheduler-event-loop" java.lang.StackOverflowError

解决方法:

操作步骤一

1.连接上提交spark-submit的服务器,输入下面命令,可以看看默认的栈大小,我的是1M

java -XX:+PrintFlagsFinal -version | grep ThreadStackSize

2.找到spark的配置文件,每个人的环境不一样,这里就不贴路径了,编辑之

sudo gedit  /usr/local/spark/conf/spark-defaults.conf

3.在最后面加上如下配置,大小可根据实际情况指定,大点无所谓,小了要报错。

spark.driver.extraJavaOptions=-Xss30M

操作步骤二:

主程序if __name__  == "__main__": 加入

sc.setCheckpointDir('checkpoint')

样例如下:

if __name__ == "__main__":
    sc=CreatSparkContext()
    sc.setCheckpointDir('checkpoint')
    print("=========数据准备阶段===========")
    ratingsRDD = PrepareData(sc)  
    print("===========训练阶段============")
    print("开始ALS训练,参数 rank=5,interations=20, lambda=0.1");
    model = ALS.train(ratingsRDD, 5, 20, 0.1) 
    print("==========存储 Model==========")
    SaveModel(sc)

最后重启spark

你可能感兴趣的:(大数据Spark,#,Spark,Mllib,ALS推荐算法)