org.apache.spark.SparkException: Task not serializable

编写spark streaming 程序时遇到org.apache.spark.SparkException: Task not serializable错误,翻译为task没有序列化,经排查,是因为在executor端执行的函数内容中,try catch 的finally代码块里调用了stremingcontext的stop方法;
这里觉得奇怪是因为正常在finally里面调用ssc.stop()并不会报错,是因为之前都是将数据收集到Driver端后进行处理的,在Driver端调用.foreachRDD方法执行函数,这时调用ssc.stop()就不会存在闭包问题;
另外,executor端运行函数逻辑连接Redis数据库插入数据时,是不用try catch的,这个try catch 是我自己加上去的,以后不用try catch 的代码块不要加 try catch, 共勉;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值