我有一个关于火花的问题。我使用的是spark 2.2,据我所知,每位执行者都会动手执行任务。每个任务对应一个分区。分区的默认数量基于默认的并行性和文件大小/默认块大小。因此,考虑一个1 GB的文件大小和一个由4个执行程序组成的集群,每个执行程序可以启动2个任务(2个核心)。根据计算,执行程序的内存应约为256 MB(每个任务在128 MB块上运行2个任务)+ 384 MB开销。但是,如果我以此大小作为执行程序内存运行代码,则性能会降低。如果我给执行程序内存1.5 GB(考虑到rdd的一些计算),性能仍然很慢。只有当我将执行程序的内存增加到3GB时,性能才是良好的。
有人可以解释吗 1.当我们一次只处理128 MB的数据时,为什么需要这么多的执行程序内存。 2.我们如何计算工作所需的最佳执行者记忆力
感谢您的帮助