У меня довольно простое задание PySpark, на котором последний этап читает некоторые перемешанные данные, выполняет некоторую агрегацию по окну и записывает в HDFS. Медианная задача имеет:
- 130 МБ для чтения в случайном порядке
- 3,4 МБ выходного размера (запись в HDFS)
- 2,0 ГБ в случайном порядке (память)
- 140 МБ случайного разлива (диск)
Существует перекос между задачами, но ничего существенного.
Мой вопрос: поскольку для каждой задачи было прочитано только 130 МБ перемешивания, и былобез случайной записи (так как не было более поздних этапов), как может быть 2 ГБ случайного разлива на одну задачу?
Насколько я понимаю, данные случайного воспроизведения высыпаются из памяти на диск, если они занимают слишком многоОЗУ на исполнителя. Но здесь количество, которое вылилось из памяти, было намного больше, чем общий объем перемешанных данных. В общем, как случайный разлив может быть больше, чем размер перемешанных данных?