pyspark执行器节点上的python进程是否在ram中共享广播变量?

Tha*_*Guy 9 python shared-memory apache-spark pyspark

我的火花集群中有一个24核和124Gb ram的节点.当我将spark.executor.memory字段设置为4g,然后广播一个需要3.5gb存储在ram中的变量时,核心是否共同拥有该变量的24个副本?还是一份?

我正在使用pyspark - v1.6.2

use*_*411 7

我相信PySpark不会使用任何形式的共享内存来共享工作者之间的广播变量.

在类Unix系统上,广播变量被加载到worker的main函数中,只有从守护进程中分叉后调用,因此无法从父进程空间访问.

如果你想在不使用外部服务的情况下减少大变量的占用空间,我建议使用带有内存映射的文件支持对象.这样您就可以有效地使用NumPy数组.

相比之下,本机(JVM)Spark应用程序确实在单个执行程序JVM上的多个执行程序线程之间共享广播变量.