30 экзекуторов, по 8 кор. Во всех запрсах это хорошо, но в одном месте есть 30 партиций и нужно чтобы каждая партиция/таска обрабатывалась своим экзекутром, сейчас на экзекутор наваливаеся множество тасок и ему не хватает памяти, хотя глобальных ресурсов валом. Spark.task.cpu в 3 спарке нельзя поменять на лету, к сожалению ...
Разве что поиграться с колонкой репартицирования, поджойнив на специальную табличку со значениями, хэш которых строго равен конкретным числам
Написан репартишен. Но таски то по партициям, а распределчется по корам
Репартишен надо написать так, чтоб хэш от ключа партицирования был ровно 0, 8, 16, 24 и т д
Чтоб данные попали в соответствующие таск айди
Ну они так попадают
Нет, они попадают не так, как тебе надо
1. Тебе точно нужно 3 там? 2. Я б вместо черной магии всякой памятью бы закидал. Сколько всего памяти сейчас на этой жобе? 30гб? 300? С 30 до 90 сделать ок. Если приходится крутить до 1ТБ уже имеет смысл магия, да
Других вариантов нет.
Ну вообще ты можешь свой партишонер написать или выглядит так, что тебе просто сделать репартишон 60 чтобы влезло в память
Обсуждают сегодня