датафрейм над которым выполняются простые трансформации: несколько лефт джойнов (броадкаст), фильтрация, ренейминг и тд (из самого тяжелого - это броадкаст джойны)
Соответственно, эта джоба покрыта тестом. Далее я добавляю две трансформации - аггрегация (сумма) через window функцию и анпивотинг. Тут начинается самое интересное - если виндоу функцию ставить ДО анпивотинга, то тест начинает виснуть минут на 20+ и выкидывает ошибку:
Total size of serialized results of 9348 tasks (1024.1 MB) is bigger than spark.driver.maxResultSize (1024.0 MB)
если виндоу функцию поставить ПОСЛЕ анпивотинга, то всё в порядке, тест отрабатывает и не виснет. Из интересных наблюдений - попытался вывести вот это:
println(df.rdd.getNumPartitions)
в первом случае = 25800
во втором = 200
Я, если честно, немного в ступоре, может кто-нибудь это как-нибудь прокомментировать?
Планы надо сравнить наверное
там просто очень адовый план, тяжело в него смотреть. подумал, что я мб чего упускаю
Мм...у тебя в оконной функции партишн бай используется по какому атрибуту? Есть мнение, что там 25800 уникальных ключей, и ты получаешь адовый репартишн. Не совсем понимаю, правда, причем тут драйвер.
не. в тесте всего несколько записей
Обсуждают сегодня