为什么我没有使用spark中的所有内存?

2024-04-29 04:33:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我不知道为什么我的工作都在慢慢地运行,因为我的记忆并不是很好。在

当我进入spark UI并单击“Executors”时,我看到使用了以下内存: enter image description here

当我看到我的遗嘱执行人时,我看到了下表: enter image description here

我想知道为什么“已用”内存与“总内存”相比如此之小。怎样才能尽可能多地使用内存?在

其他信息:

  • 我有一个小的广播表,但它只有1MB的大小。它应该为每个执行器复制一次,所以我不认为它会对这个有那么大的影响。

  • 我正在使用由纱线管理的spark

  • 我用的是spark 1.6.1
  • 配置设置为:

    spark.executor.memory=45g

    spark.executor.cores=2

    spark.executor.instances=4

    spark.sql.broadcastTimeout = 9000

    spark.memory.fraction = 0.6

  • 我正在处理的数据集有8397行,80个分区。除了最初重新分区到80个分区之外,我不执行任何shuffle操作。

当我添加列时,这会变得很慢。之前的所有部分似乎都相当快,当我尝试使用自定义udf(使用withColumn)添加列时,该部分的速度似乎有所放缓。在

这里有一个类似的问题: How can I tell if my spark job is progressing?但我的问题更为尖锐——为什么“内存使用量”显示的数字如此之低?在

谢谢。在


Tags: instances记忆内存信息uisqlcores执行器