Да, метод подсчета на самом деле правильный путь. В идеале вы хотите, чтобы ваши rdd-разделы имели какой-то значительный размер, например 50 МБ, перед записью. В противном случае вы столкнетесь с «маленькой проблемой с файлом»
Теперь, если у вас большие объемы данных, кеширование в памяти может быть затруднено. Вы можете попробовать MEMORY_AND_DISK
, но тогда данные попадут на диск и приведут к замедлению.
Я сталкивался с этим затруднением несколько раз, и каждый раз я выбирал «магическое число» для числа разделов. Число параметризовано, поэтому, когда мне нужно изменить, мне не нужно менять код, достаточно передать другой параметр.
Если вы знаете, что ваш размер данных обычно находится в определенном диапазоне, вы можете установить номер раздела жестко закодированным. Это не идеально, но выполняет свою работу.
Также вы можете качать такие показатели, как размер данных в s3, и если это нарушает какой-то порог, поднять тревогу, тогда кто-то может изменить номер раздела вручную.
Как правило, если вы держите номер раздела умеренно высоким, например 5000, для примерно 500 ГБ данных, которые работают для большого диапазона, то есть от 300 ГБ до 1,2 ТБ данных. Это означает, что, возможно, вам не нужно менять номер раздела слишком часто, если у вас умеренный приток данных.