我想知道为什么我的工作运行得非常慢,这似乎是因为我没有使用PySpark中的所有可用内存。
当我转到spark UI,然后点击“Executors”时,我看到使用了以下内存:
我想知道为什么“使用”内存与“总内存”相比如此之小。我能尽量使用尽可能多的内存吗?
其他信息:
我有一个小的广播表,但它的大小只有1MB。它应该每个执行者复制一次,所以我不认为它会对此产生太大的影响。
我正在使用由纱线管理的火花
配置设置为:
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?但我的问题更尖锐 - 为什么“使用的内存”显示的数字如此之低?
感谢。