Spark Streaming中序列化问题:org.apache.spark.SparkException: Task not serializable和对foreachRDD的一些总结

其实官网上面已经指明的这个错误了!!!! 甚至还给出了解决方法
官网文档
但是我自己又通俗的总结了一些:

dstream.foreachRDD { rdd =>
val connection = createNewConnection() // executed at the driver
rdd.foreach { record =>
connection.send(record) // executed at the worker
}
}
官网上面说了
connection ---- 执行再driver 端
connection.send ---- 执行再execute端

首先看一个简单的架构(我自己亲手画的!!!!)
原创~~~

我有三个机器: hadoop000, hadoop001, hadoop002,
1 Driver端上面是SparkStreaming程序
2 Driver端会命令Executer端开启一个Receiver去接受数据,
3 Driver上面的StreamingContext会命令底层的SparkContext去执行这个Job。
4 SparkContext会把job再分发给其他的Executer去执行。

那么问题就出现再第4步~~~ 分发!!

因为再分发的时候, 是会对对象进行序列化操作。 序列化就需要Serializable接口。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值