У меня есть фрейм данных PySpark, который содержит записи для 6 миллионов человек, каждый с отдельным userid
. Каждый userid
имеет 2000 записей. Я хочу сохранить данные каждого userid
в отдельный CSV-файл с именем userid
.
У меня есть код, который делает это, взят из решения этого вопроса . Однако, насколько я понимаю, код будет пытаться разделить каждый из 6 миллионов идентификаторов. На самом деле меня это не волнует, так как я собираюсь записать каждый из этих файлов на другой не-HDFS сервер.
Следует отметить, что код работает для небольшого числа userids
(до 3000), но не работает на полных 6 млн.
Код
output_file = '/path/to/some/hdfs/location'
myDF.write.partitionBy('userid').mode('overwrite').format("csv").save(output_file)
Когда я запускаю вышеупомянутое, требуются НЕДЕЛИ, чтобы выполнить с большей частью того времени, потраченного на шаг письма Я предполагаю, что это из-за количества разделов. Даже если я вручную укажу количество разделов на что-то маленькое, выполнение все равно займет много времени.
Вопрос : Есть ли способ сохранить все данные userids
в один файл с хорошо названным именем (имя файла = userid
) без разбиения?