Запись данных: партиционирование на диске, проблема мелких файлов, табличные форматы
При записи есть два разных «партиционирования», и их путают. Партиции в памяти — это число задач, и каждая задача пишет свои файлы. Партиционирование на диске (partitionBy) — раскладка по каталогам вида dt=2026-08-30/country=GE, которая позволяет читателю пропускать целые каталоги. Их произведение и порождает главную беду — мелкие файлы: 200 партиций в памяти × 50 значений ключа = 10 000 файлов, каждый по несколько сотен килобайт. Читать такое дорого: на каждый файл нужен запрос к хранилищу и отдельная задача. Лечение — repartition по тем же колонкам, что и partitionBy, перед записью: тогда каждое значение ключа пишется одной задачей. Выбирать ключ партиционирования нужно по кардинальности: дата — да, идентификатор пользователя — никогда. Табличные форматы (Iceberg, Delta) решают это иначе: скрытое партиционирование, компакция и атомарные коммиты вместо «перезаписать каталог».