pyt*_*nic 8 java scala apache-spark
我有一个非常大的只读数据,我希望同一节点上的所有执行程序都能使用.这可能在Spark中.我知道,你可以广播变量,但是你可以广播真正的大数组.在引擎盖下,它是否在同一节点上的执行程序之间共享数据?这如何能够在同一节点上运行的执行程序的JVM之间共享数据?
Kri*_*ris 5
是的,在考虑您的数据是只读(不可变)时,您可以使用广播变量.广播变量必须满足以下属性.
因此,这里唯一的条件是您的数据必须能够适合一个节点的内存.这意味着数据不应该是超大或超出内存限制的任何东西,如大表.
每个执行器都接收广播变量的副本,并且该特定执行器中的所有任务都在读取/使用该数据.这就像向集群中的所有工作节点发送一个大的只读数据.也就是说,只运送给每个工人一次而不是每个任务和执行者(它的任务)读取数据.
归档时间:
9 年 前
查看次数:
3768 次
最近记录:
7 年,1 月 前