如何知道pyspark中广播变量可用的内存量?

时间:2017-12-07 23:44:51

标签: apache-spark pyspark apache-spark-sql spark-dataframe

我有一个广播变量,我在pyspark使用,我想知道我有多少空间可用。

我知道广播变量保持在spark.executor.memory范围内,但它是否必须符合存储的范围?还是处理的范围?

我知道spark.memory.fraction是用来确定用于存储的spark.executor.memory的分数,而不是用于处理的数量。但是,我的spark.executor.memory是10GB而spark.memory.fraction0.75

广播变量是否必须小于2.5GB或小于5GB

这是pyspark 1.6.1。

此外,这里有一个可用作参考点的资源:https://0x0fff.com/spark-memory-management/
我不明白什么是"用户记忆"在那篇文章中。

编辑:作为此问题的扩展,知道cached表的存储位置会很棒。那些与广播变量在同一个地方吗?还是某个不同的地方?在我看来,这些都在spark.memory.storageFraction内。

1 个答案:

答案 0 :(得分:3)

广播变量存储在Python进程的内存中(JVM上也有序列化副本)。因此,使用的内存部分是执行内存。

请记住,PySpark会为每个Spark核心保留一份变量副本。所以实际内存限制更接近

(`spark.executor.memory` * `spark.memory.fraction`) / `spark.executor.cores`