方案一
new Object(); // 需要实现序列化
map(x=>{
引用外边Object
})
结果
同一个Executor不同线程调用的Object为同一个
但是 多个Executor 之间不是同一个,
Object先在driver创建 然后序列化,然后在Executor里反序列化
--------------------------------
方案二
new Class(); // 需要实现序列化
map(x=>{
引用外边Class
})
结果
每个线程中的Class都是一个新的。
Object先在driver创建 然后序列化,然后在Executor里反序列化
--------------------------------
方案三
map(x=>{
内部创建Object(不需要序列化)
})
结果
同一个Executor不同线程调用的Object为同一个
但是 多个Executor 之间不是同一个
Object在Executor里创建,不在Driver端创建
--------------------------------
方案四
map(x=>{
内部创建Class(不需要序列化)
})
结果
每次map中没循环一次都是一个新的
Object在Executor里创建,不在Driver端创建
Spark闭包,序列化,多线程、线程抢占(线程不安全)问题
于 2021-02-03 12:46:09 首次发布