java – 在Spark中,是否可以在两个执行程序之间共享数据?
发布时间:2020-12-15 00:40:41 所属栏目:Java 来源:网络整理
导读:我有一个非常大的只读数据,我希望同一节点上的所有执行程序都可以使用.这可能在Spark中.我知道,你可以广播变量,但是你可以广播真正的大数组.在引擎盖下,它是否在同一节点上的执行程序之间共享数据?这如何能够在同一节点上运行的执行程序的JVM之间共享数据?
我有一个非常大的只读数据,我希望同一节点上的所有执行程序都可以使用.这可能在Spark中.我知道,你可以广播变量,但是你可以广播真正的大数组.在引擎盖下,它是否在同一节点上的执行程序之间共享数据?这如何能够在同一节点上运行的执行程序的JVM之间共享数据?
解决方法
是的,在考虑您的数据是只读(不可变)时,您可以使用
broadcast变量.广播变量必须满足以下属性.
>适合记忆 所以,这里唯一的条件是你的数据必须能够适合一个节点的内存.这意味着数据不应该是超大或超出内存限制的任何东西,如大表. 每个执行器都接收广播变量的副本,并且该特定执行器中的所有任务都在读取/使用该数据.这就像向集群中的所有工作节点发送大型只读数据一样.即,只向每个工人运送一次而不是每个任务和执行者(它的任务)读取数据. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- java – 使用FlyingSaucer将包含阿拉伯字符的HTM
- HttpServletRequest & HttpServletResponse
- 如何使用提供的用户名和密码来读取Java中的文件
- java – Dagger不喜欢抛出异常的构造函数
- JSP Request.getInputStream()方法:获取request
- java – 如何知道与WeakHashMap中已删除条目关联
- java – 为什么en_GB语言环境认为1月1日是一年中
- 图像处理 – 如何将两个不同维度图像的光谱相乘?
- Java微信公众平台开发(11) 微信三大平台的关联
- java – 没有传递给Ant的Teamcity构建计数器
热点阅读