微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 在Spark中,是否可以在两个执行程序之间共享数据?

我有一个非常大的只读数据,我希望同一节点上的所有执行程序都可以使用.这可能在Spark中.我知道,你可以广播变量,但是你可以广播真正的大数组.在引擎盖下,它是否在同一节点上的执行程序之间共享数据?这如何能够在同一节点上运行的执行程序的JVM之间共享数据?

解决方法

是的,在考虑您的数据是只读(不可变)时,您可以使用 broadcast变量.广播变量必须满足以下属性.

>适合记忆
>永恒不变
>分发到群集

所以,这里唯一的条件是你的数据必须能够适合一个节点的内存.这意味着数据不应该是超大或超出内存限制的任何东西,如大表.

每个执行器都接收广播变量的副本,并且该特定执行器中的所有任务都在读取/使用该数据.这就像向集群中的所有工作节点发送大型只读数据一样.即,只向每个工人运送一次而不是每个任务和执行者(它的任务)读取数据.

原文地址:https://www.jb51.cc/java/129440.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐