我有一个广播变量,我在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
内。
答案 0 :(得分:3)
广播变量存储在Python进程的内存中(JVM上也有序列化副本)。因此,使用的内存部分是执行内存。
请记住,PySpark会为每个Spark核心保留一份变量副本。所以实际内存限制更接近
(`spark.executor.memory` * `spark.memory.fraction`) / `spark.executor.cores`