Я не верю, что есть какой-нибудь способ иметь неоднородно размер исполнителей. Вы можете ограничить размеры рабочих узлов, но это существенно ограничивает общий объем памяти, который работник может выделить в этом поле.
Когда вы запускаете приложение, вы можете указать только spark.executor.memory на уровне приложения, который запрашивает столько памяти для каждого исполнителя на одного работника.
Если вы находитесь в ситуации, когда у вас есть коробки с разнородным размером, то вы можете сделать SPARK_WORKER_MEMORY меньшим количеством, а затем установить более крупные значения SPARK_WORKER_INSTANCES = 2 и SPARK_WORKER_INSTANCES = 1 в меньшем поле. В этом примере мы предполагаем, что ваши большие ящики в два раза больше, чем меньшие. Затем вы в конечном итоге будете использовать всю память в больших коробках и всю память на меньших полях, имея в два раза больше исполнителей на больших ящиках.