栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Spark中的“闭包引用“问题

Spark中的“闭包引用“问题

定义:载一个RDD算子中,引用了外部的对象,则该对象会被序列化发送到各个Excutor上反序列化;反序列化出来的闭包对象,已经是完全独立的,如果在RDD算子中修改外部对象,并不会影响到Driver端的原对象.
  spark中这个所谓“闭包”,只是看起来类似各种编程语言中的闭包,而本质上根本不是一回事.
  spark中的这个“闭包引用”,其实是Driver把分布式算子中引用的外部变量序列化后,发送给每个task来使用(闭包引用的目标对象必须是可序列化的即实现了Serializable接口,而且数据量不能太大,否则会增加Task中的内存压力);

示例:

Q:Spark的闭包中是否会存在线程安全问题:

答:有可能.如果引用的闭包对象是一个单例对象,在一个Excutor中多个Task会使用到,则一个Task修改之后会影响到其他Task的运行,产生安全问题;而如果引用的是普通对象,每个Task中持有一份,就不会存在线程安全问题.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/745578.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号