Причина такого поведения:
Предположим, у вас есть 100,05,000 строк данных, равномерно распределенных между 10 разделами. Таким образом, каждый раздел теперь будет содержать 10,00500 строк. Учитывая, что каждое ядро исполнителя будет работать над каждым разделом, при выполнении задачи записи каждый исполнитель записывает 1 файл с 10 000 000 строк, а другой - 500 строк. Таким образом, в идеале будет 10 одинаковых по размеру файлов и 10 одинаковых по размеру файлов. Это то, что происходит в вашем случае.
Решение:
Вам нужно выполнить count
, а затем, исходя из этого значения, вам нужно прийти к числу, так что строк в каждом файле будетгде-то около 10 000 000. Используйте это число в методе repartition
, и в конце вы найдете файлы одинакового размера.
Надеюсь, это поможет!