我有一个节点,它有24个核心和124 in内存在我的星体集群中。当我将spark.executor.memory字段设置为4g,然后广播一个以3.5gb存储在ram中的变量时,内核是否会总共保存该变量的24份副本?还是一份?
我使用的是吡咯烷酮- v1.6.2
发布于 2016-10-17 12:56:47
我相信PySpark不会使用任何形式的共享内存来在工作人员之间共享广播变量。
在类似Unix的系统上,在辅助程序的主函数中广播变量装上,这个函数只从守护进程调用后叉,因此不能从父进程空间访问。
如果您想在不使用外部服务的情况下减少大型变量的占用,我建议使用带有内存映射的文件支持对象。这样,您就可以有效地使用例如NumPy阵列。
相反,本机( JVM ) Spark应用程序确实在单个executor JVM上的多个执行器线程之间共享广播变量。
https://stackoverflow.com/questions/40082586
相似问题