为什么我没有在火花中使用所有内存?

时间:2017-12-12 03:28:06

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

我想知道为什么我的工作运行得非常慢,这似乎是因为我没有使用PySpark中的所有可用内存。

当我转到spark UI,然后点击“Executors”时,我看到使用了以下内存: enter image description here

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

我想知道为什么“使用”内存与“总内存”相比如此之小。我能尽量使用尽可能多的内存吗?

其他信息:

  • 我有一个小的广播表,但它的大小只有1MB。它应该每个执行者复制一次,所以我不认为它会对此产生太大的影响。

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

  • 我正在使用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个分区之外,我没有进行任何随机操作。

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

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

感谢。

0 个答案:

没有答案