我有一个在Pyspark中使用的广播变量,我想知道我有多少可用空间。
我知道广播变量停留在spark.executor.memory
中,但是它必须适合存储范围吗?还是处理的范围?
我知道spark.memory.fraction
是用于确定用于存储的spark.executor.memory
的分数,而不是用于处理的数量。但是,假设我的spark.executor.memory
是10GB,spark.memory.fraction
是0.75
。
广播变量必须小于2.5GB
或小于5GB
?
这是Pyspark 1.6.1。
另外,这是一种作为参考点有用的资源:https://0x0fff.com/spark-memory-management/
我不明白该文章中的"用户内存"是什么。
编辑:作为此问题的扩展,很高兴知道cached
表存储在何处。那些与广播变量相同的地方吗?还是不同的地方?在我看来,就像在spark.memory.storageFraction
内部。
广播变量存储在Python进程的内存中(JVM上也有串行化副本)。因此,使用的内存部分是执行内存。
请记住,Pyspark保留每个火花核心的变量的副本。因此,实际的内存限制更接近
(`spark.executor.memory` * `spark.memory.fraction`) / `spark.executor.cores`