model.save(sc,'fname')异常Exception in thread "dag-scheduler-event-loop" java.lang.StackOverflowError

最近在使用pyspark保存model的时候出现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

重启spark是配置生效

注意:如果无法修改spark集群的参数,可以在spark-submit提交任务时增加参数--conf "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)

 

参考:https://blog.csdn.net/weixin_38504735/article/details/103281299

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值