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

我有一个在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/
我不明白那篇文章中的“用户内存”.

编辑:作为此问题的扩展,很高兴知道缓存表的存储位置.那些变量与广播变量是否位于同一位置?或其他地方?在我看来,这些好像在spark.memory.storageFraction中.

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

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

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

转载注明原文:apache-spark-如何知道pyspark中可用于广播变量的内存量? - 代码日志